当前位置: 首页 > 知识库问答 >
问题:

Pyspark:从 blob 存储加载 zip 文件

董花蜂
2023-03-14

我正在使用 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

我预计这将以df的形式将zip加载到数据库,然后我可以按照文章中的建议解压缩,将csvs加载到数据帧,然后将数据帧写回blob。

关于如何使用pyspark从blo中最初读取zip文件的任何想法?

谢谢

共有1个答案

干鑫鹏
2023-03-14

如 DataBricks 笔记本的第一个单元格所示,您需要下载 zip 文件并以某种方式解压缩它。你的情况有所不同,因为你使用的是 Azure Blob 存储,并且想要在 Python 中执行所有操作(没有其他外壳应用程序)。

此页面记录了访问Azure Blob存储中的文件的过程。您需要遵循以下步骤:

  1. 安装包azure-storage-blob
  2. 导入SDK模块并设置必要的凭据(参考)。
  3. 使用连接字符串创建BlobServiceClient的实例:
# Create the BlobServiceClient object which will be used to create a container client
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
blob_client = blob_service_client.get_blob_client(container="container", blob="path_to_my.zip")
from pathlib import Path
import gzip

Path("./my/local/filepath.csv").write_bytes(
    gzip.decompress(blob_client.download_blob().readall())
)
 类似资料:
  • 我有一个Azure函数,当一个blob被上传到某个目录时会被触发。它处理一个zip文件。当我用Azure storage explorer将文件上传到容器时,它工作得非常好。当我通过网络API上传它时,它爆炸了。如果我下载了这个文件,它似乎已经损坏,但是,它与源文件大小相同,当我在2个文件之间进行超越比较时,它看起来是相同的(超越比较似乎可以看到zip文件的内容)。 这里是上传代码: 文件可以很好

  • 我想知道如何使用ngx awesome uploader将图像从Angular上传到azure storage blob。 我希望能够使用此库将其直接从angular发送到azure存储blob。我已经能够将它发送到我的nodejs后端没有问题,但是直接将它发送到blob存储对我来说是一个挑战。有人能提供一个如何做到这一点的工作示例吗?谢谢你的帮助! ngx真棒上传器的stackblitz示例 该

  • 我能够通过Node/Express将文件上传到Azure blob存储,没有任何问题,但我找到了关于如何下载文件的非常少的文档/完整示例。我在教程页面上找到了这个,但是运气不好: 是否有其他人使用node.js/express从Azure blob存储下载文件?您是否使用Azure或其他方法(例如请求)。您能否分享如何从Azure获取文件并将其流式传输到文件夹?

  • > 我正在向我的某个 Azure Api 管理 API 发送 POST 请求 在此帖子请求中,有一个 json 正文,其中包含 base64 编码的数据(zip 文件),如以下示例所示: {“foo”:“bar”,“data”:“your-base64-string”} 在API策略中,我想向Azure Storage REST API发送一个单独的请求,将上面提到的base64字符串保存为一个z

  • 问题:从数据生成的包含csv文件的zip文件在上传到Azure Blob存储后似乎已损坏。 上传前的zip文件如下所示: 在上传过程中,我使用了Azure Storage Blob client library for Java(12.7.0版,但我也尝试了以前的版本)。这是我使用的代码(类似于SDK自述文件中提供的示例): 我得到了上传的文件: 当我直接从storage explorer下载文件

  • 从16:00到16:12,下载有短暂的暂停。停顿之间的间隔是相同的,但长度会增加。在 16:12 时,速度变为 Kb/s,并且永远不会返回到正常值。 下面是进行下载的代码(。NET 4.0): 这些问题的原因可能是什么? 编辑 为了获取统计信息,我使用以下 Stream 实现: