我正在使用 Pyspark 尝试从 blob 存储中读取 zip 文件。我想在加载后解压缩文件,然后将解压缩的 CSV 写回 Blob 存储。
我正在遵循此指南,该指南解释了如何在阅读后解压缩文件:https://docs.databricks.com/_static/notebooks/zip-files-python.html https://docs.databricks.com/_static/notebooks/zip-files-python.html
但它没有解释我如何从 blob 读取 zip。我有以下代码
file_location = "path_to_my.zip"
df = sqlContext.read.format("file_location").load
我希望这会将 zip 加载到 databricks 中df
,然后我可以按照文章中的建议解压缩,将 csv 加载到数据帧,然后将数据帧写回到 blob。
关于如何使用 pyspark 最初从 blob 读取 zip 文件有什么想法吗?
Thanks,
如 DataBricks 笔记本的第一个单元格所示,您需要下载 zip 文件并以某种方式解压缩。您的情况有所不同,因为您使用的是 Azure Blob 存储,并且希望在 Python 中完成所有操作(没有其他 shell 应用程序)。
这一页 https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python记录访问 Azure Blob 存储中的文件的过程。您需要按照以下步骤操作:
-
Install https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python#install-the-package包裹
azure-storage-blob
.
- 导入 SDK 模块并设置必要的凭据(参考 https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python#set-up-the-app-framework).
- 创建一个实例
BlobServiceClient
使用连接字符串:
# Create the BlobServiceClient object which will be used to create a container client
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
- 创建一个实例
BlobClient
对于你想要的文件:
blob_client = blob_service_client.get_blob_client(container="container", blob="path_to_my.zip")
-
下载 blob https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python#download-blobs(zip 文件)并使用
gzip
。我会写这样的东西:
from pathlib import Path
import gzip
Path("./my/local/filepath.csv").write_bytes(
gzip.decompress(blob_client.download_blob().readall())
)
- Use
"./my/local/filepath.csv"
创建数据框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)