【发布时间】:2018-11-28 02:26:28
【问题描述】:
我正在使用 Python 和 Pyspark,我想将 CSV 文件上传到 azure blob 存储。我已经有一个由代码生成的数据框:df.我想做的是下一个:
# Dataframe generated by code
df
# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='name', account_key='key')
container_name ='results-csv'
d = {'one' : pandas.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two' : pandas.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pandas.DataFrame(d)
writer = pandas.ExcelWriter(df, engine='xlsxwriter')
a = df.to_excel(writer, sheet_name='Sheet1', index=False, engine='xlsxwriter')
block_blob_service.create_blob_from_stream(container_name, 'test', a)
我得到错误:
ValueError: stream should not be None.
所以我想将数据帧的内容作为 blob 上传到上面提供的存储位置。有什么方法可以做到这一点,而无需先在我的本地计算机中生成 CSV 文件?
【问题讨论】:
-
无论您如何创建该 CSV 文件,您都可以将其保存到
BytesIO,这与保存到文件几乎相同。然后您可以将其作为流或字节上传。 -
你能举个例子作为答案吗?
-
我将编辑我的问题,使其更加明确。
-
你可以使用
a = df.to_csv()和block_blob_service.create_blob_from_text(container_name, "test.csv", a)
标签: python azure dataframe pyspark blob