У меня есть фрейм данных dask dask_df
, который я хочу сохранить непосредственно в S3 без преобразования в панды (dask_df.compute()
), поскольку он слишком большой. Проблема в том, что строковый ввод-вывод выдает ошибку, когда я пытаюсь сделать следующее:
import boto3
from boto3 import session, client
import dask.dataframe as dd
import datetime
today = date.today()
client = boto3.client('s3')
bucket = 'test-bucket'
prefix = 'foldername/'
csv_buffer = StringIO()
dask_df.to_csv(csv_buffer)
filename = 'filename_{}.csv'.format(today)
response = client.put_object(
ACL = 'private',
Body = csv_buffer.getvalue(),
Bucket = bucket,
Key = prefix+filename
)
Это ошибка, которую я получаю -
Поднять TypeError ( "тип URL-адреса не распознан: %s"% urlpath")
TypeError: тип URL-адреса не распознан: <_io.StringIO object at 0x7f830e6b5550>
1 ответ
docstring делает НЕ говорите, что вы можете писать в StringIO; действительно, разве вы не ожидали, что это заполнит вашу память?
К счастью, Даск сделал всю работу за вас, и вы можете сделать
dask_df.to_csv("s3://test-bucket/foldername/filename_*.csv")
Вот и все.
См. Также: удаленные данные и Dask
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.