Pyspark:从 blob 存储加载 zip 文件

2024-01-23

我正在使用 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 存储中的文件的过程。您需要按照以下步骤操作:

  1. Install https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python#install-the-package包裹azure-storage-blob.
  2. 导入 SDK 模块并设置必要的凭据(参考 https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python#set-up-the-app-framework).
  3. 创建一个实例BlobServiceClient使用连接字符串:
# Create the BlobServiceClient object which will be used to create a container client
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
  1. 创建一个实例BlobClient对于你想要的文件:
blob_client = blob_service_client.get_blob_client(container="container", blob="path_to_my.zip")
  1. 下载 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())
)
  1. Use "./my/local/filepath.csv"创建数据框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyspark:从 blob 存储加载 zip 文件 的相关文章

随机推荐

  • 从 preg_match_all() 获取行号

    我正在使用 PHP 的 preg match all 来搜索使用 file get contents 导入的字符串 正则表达式返回匹配项 但我想知道在哪个行号找到这些匹配项 实现这一目标的最佳技术是什么 我可以将文件作为数组读取 并为每一行
  • Jekyll 将每个换行符转换为换行符

    我正在使用 Jekyll 和 kramdown 来制作一个静态站点 今天我注意到每当我将同一个句子继续到新行时 Jekyll 就会插入一个 br 标记那里 以前从未发生过这种情况 由于我所有的 Markdown 文件都没有超过 80 个字符
  • 用于清除 RStudio 中命令历史记录的命令或键盘快捷键

    相当于按 RStudio 历史记录窗口中的小扫帚按钮清除当前会话中的整个历史记录缓冲区的命令或键盘快捷键是什么 Note that I don t mean Ctrl L which clears the command window I
  • 从模板创建用于在 Qt 中打印的 PDF 文档

    我编写一个应用程序 当用户在对话框窗口中插入数据 文档标题 发件人姓名和地址等 时 我的应用程序应该根据该用户数据生成一个 pdf 文件 PDF 文件应该有定义的布局 如下所示 我尝试这样做QPdfWriter但在 pdf 中对齐文本时遇到
  • 为什么接口方法没有主体

    要实现多重继承 我们必须使用接口 但是为什么接口方法没有主体 为什么必须在派生类中重写它们呢 我真的想要一个清晰的答案 不涉及太多计算机术语 我似乎无法理解这一点 我参考了各种参考资料 因为 Java 与 C 或 Eiffel 等语言相比
  • android recyclerView水平和垂直间距

    大家好 我对 android 很陌生 我在 recyclerview 方面遇到了问题 我试图在回收视图中的图像视图之间添加空间 但没有成功 我想要的是 怎么了 以下是我的实现ItemOffsetDecoration java public
  • EmberJS 中的 I18n(路由和一般情况)

    EmberJS 支持国际化应用程序的翻译路由吗 或者至少可以轻松扩展它以支持 i18n 路由 有人有这方面的经验吗 例如 可以以某种方式从语言环境文件动态设置路由字符串吗 另外 当使用 Ember 和 Rails 路由时不必指定两次 这会很
  • 无法分配 CursorWindow

    我正在操作SQLite3我的 Android 应用程序中的数据库 我刚刚从预填充的数据库中读取数据 该数据库有 20 万行和 14 列 条目是文字 所有列的数据类型都是文本 查询最多 11 个字母的单词 例如 ABANDONMENT 效果很
  • 使用 IMongoQueryable 进行单元测试

    我正在使用 NET Core 2 0 和 NET Core MongoDB 驱动程序 我创建了一个像这样的存储库 public interface IRepository
  • Laravel 5.1 eloquent 的 with() 方法中的使用限制

    Eloquent staffGroup StaffGroup where id id gt with staffGroupRight gt first In StaffGroup Model public function staffGro
  • 获取类的实例方法列表

    我有一堂课 class TestClass def method1 end def method2 end def method3 end end 我如何获得此类中的方法列表 method1 method2 method3 TestClas
  • 将参数添加到 @keyframes 属性 Less

    我有一处房产 keyframes 我用autoprefixer编译来添加所需的前缀 我想做的是向动画名称 或任何可能的地方 添加一个参数 以将属性值更改为关键帧键 这就是我现在所拥有的 keyframes loader 0 transfor
  • Node.js Express 模块未正确加载

    Geos Mac hone georgiana npm list Users georgiana local hone email protected cdn cgi l email protection email protected c
  • (Z3Py) 函数声明有什么限制吗?

    函数声明有什么限制吗 例如 这段代码返回 unsat from z3 import def one op op arg1 arg2 if op 1 return arg1 arg2 if op 2 return arg1 arg2 if o
  • 如何让PHP使用代理设置来连接互联网?

    我位于不允许直接连接到互联网的代理服务器后面 我的所有 PHP 应用程序都无法连接到互联网进行更新检查等 我如何告诉 PHP 我的代理设置 我不想在代码中输入代理设置 我希望 PHP 本身通过全局配置设置或类似的东西使用它 如果几乎所有人的
  • 根据类中的变量对类向量进行排序[重复]

    这个问题在这里已经有答案了 我有一个类 其中有一个类型变量int储存在里面 然后我创建了一个向量 其中包含此类 然后我需要对其进行排序 然而 我的问题源于这样一个事实 我需要使用此类中存储的 int 值按升序对向量进行排序 我看过std s
  • 羽毛可以与羽毛外部管理的路线共存吗

    我们有一个大型应用程序 它使用 Express 进行休息 使用 primus 进行套接字路由 一下子全部变成羽毛是非常困难的 我正在考虑分阶段的方法 我可以采用一些路线并将它们转换为服务 因此任何新路线都将遵循服务模式 我将慢慢迁移应用程序
  • 如何处理文件路径中的空格

    我在使用以下脚本时遇到问题 我正在检查的文件路径中的空格似乎让我感到震惊 关于如何不让 PoweShell 崩溃的任何想法 Program Files x86 GC C server txt server if Test Path serv
  • 如何将数组类型作为泛型类型参数传递给 VHDL 包?

    我正在 VHDL 2008 中开发通用包 列表 该包具有元素类型的泛型类型 如果我在包中声明此元素类型的数组类型 那么它就是一个新类型 所以对于例如整数 我的新整数数组将与 ieee 库中的整数向量不兼容 所以我还需要传入数组类型 例如in
  • Pyspark:从 blob 存储加载 zip 文件

    我正在使用 Pyspark 尝试从 blob 存储中读取 zip 文件 我想在加载后解压缩文件 然后将解压缩的 CSV 写回 Blob 存储 我正在遵循此指南 该指南解释了如何在阅读后解压缩文件 https docs databricks