作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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容器吗?我尝试了很多不同的东西,但没有任何效果。
最佳答案
在上传到 Blob 存储之前,您可以遵循一种方法来压缩 JSON 文件。
这是将数据转换为 JSON 并转换为二进制代码 (utf-8) 并最后对其进行压缩的代码。
建议您在上传功能之前添加此代码。
import json
import gzip
def compress_data(data):
# Convert to JSON
json_data = json.dumps(data, indent=2)
# Convert to bytes
encoded = json_data.encode('utf-8')
# Compress
compressed = gzip.compress(encoded)
引用 :
https://gist.github.com/LouisAmon/4bd79b8ab80d3851601f3f9016300ac4#file-json_to_gzip-py
关于python - 如何压缩 json 行文件并上传到 azure 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68898181/
我是一名优秀的程序员,十分优秀!