我正在使用Pyspark尝试从Blob存储中读取一个zip文件。加载后,我想解压缩文件,然后将解压缩的CSV写回到Blob存储。
我正在遵循此指南,该指南说明了一旦阅读后如何解压缩文件: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以df
的形式加载到databrick,然后从那里我可以按照文章的建议来解压缩,将csvs加载到数据帧,然后再将数据帧写回到blob。
关于如何使用pyspark最初从blob读取zip文件的任何想法?
谢谢
答案 0 :(得分:0)
如DataBricks笔记本的第一个单元格所示,您需要下载zip文件并以某种方式解压缩。您的情况有所不同,因为您使用的是Azure Blob存储,并且想用Python进行所有操作(没有其他Shell应用程序)。
This page介绍了访问Azure Blob存储中文件的过程。您需要按照以下步骤操作:
# 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")
gzip
解压缩。我会这样写:from pathlib import Path
import gzip
Path("./my/local/filepath.csv").write_bytes(
gzip.decompress(blob_client.download_blob().readall())
)
"./my/local/filepath.csv"
创建数据框。