gpt4 book ai didi

r - 如何使用 arrow::open_dataset 连接到 Azure Blob 存储中的 Parquet 文件?

转载 作者:行者123 更新时间:2023-12-05 05:51:52 27 4
gpt4 key购买 nike

我对其他方式持开放态度。这是我的约束条件:

  • 我在 Azure Blob 存储的容器中有 parquet 文件
  • 这些 parquet 文件将按产品 ID 以及日期(年/月/日)进行分区
  • 我在 R 中执行此操作,并希望能够以交互方式连接(不仅仅是在数据 block 中设置笔记本,尽管这是我稍后可能想弄清楚的事情)

这是我能做的:

  • 我知道如何使用 arrow::open_dataset()连接到本地 Parquet 目录:ds <- arrow::open_dataset(filepath, partitioning = "product")
  • 我可以使用 AzureStor 连接到我的 blob 容器,并从中查看和下载包裹。我可以通过这种方式下载单个 Parquet 文件并将其转换为数据框:
blob <- AzureStor::storage_endpoint("{URL}", key="{KEY}")
cont <- AzureStor::storage_container(blob, "{CONTAINER-NAME}")
parq <- AzureStor::storage_download(cont, src = "{FILE-PATH}", dest = NULL)
df <- arrow::read_parquet(parq)

我一直想不通的是如何使用arrow::open_dataset()引用 {FILE-PATH} 的父目录,其中我有所有 Parquet 文件,使用与我用 AzureStor 创建的容器的连接. arrow::open_dataset()只接受一个字符向量作为“sources”参数。如果我只是给它提供带有路径的 URL,我就不会传递任何类型的凭据来访问容器。

最佳答案

不幸的是,您今天可能无法完全从 R 中做到这一点。

Arrow-R 基于 Arrow-C++,而 Arrow-C++ 还没有针对 Azure 的文件系统实现。有jira票ARROW-9611 , ARROW-2034用于创建一个,但这些票据目前未在进行中。

在 python 中,可以使用 FSspec adapter 完全在 python 中创建文件系统。 .由于有一个用于 Azure Blob 存储的 python SDK,因此现在应该可以在 python 中执行您想要的操作。

大概可以为 R 创建类似的东西,但您仍然需要创建与 fsspec 适配器等效的 R,这将涉及一些 C++ 代码。

关于r - 如何使用 arrow::open_dataset 连接到 Azure Blob 存储中的 Parquet 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70305364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com