【发布时间】:2021-10-24 03:12:11
【问题描述】:
我在 databricks 中工作,并且有一个 Pyspark 数据框,我将其转换为 pandas,然后转换为 json 行文件,并希望将其上传到 Azure 容器 (ADLS gen2)。文件很大,我想在上传之前压缩它。
我首先将 pyspark 数据帧转换为 pandas。
pandas_df = df.select("*").toPandas()
然后将其转换为换行符分隔的 json:
json_lines_data = pandas_df.to_json(orient='records', lines=True)
然后使用以下函数写入 blob 存储:
def upload_blob(json_lines_data, connection_string, container_name, blob_name):
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)
try:
blob_client.get_blob_properties()
blob_client.delete_blob()
# except if no delete necessary
except:
pass
blob_client.upload_blob(json_lines_data)
这工作正常,但每个文件的数据大约为 3 GB,并且需要很长时间才能下载,所以我宁愿压缩文件。这里的任何人都可以帮助如何压缩 json 行文件并将其上传到 azure 容器吗?我尝试了很多不同的东西,但没有任何效果。
如果有更好的方法在数据块中执行此操作,我可以更改它。我没有使用databricks编写,因为我需要输出1个文件并控制文件名。
【问题讨论】:
标签: python pyspark azure-storage gzip azure-databricks