【问题标题】:How to connect to parquet files in Azure Blob Storage with arrow::open_dataset?如何使用箭头::open_dataset 连接到 Azure Blob 存储中的镶木地板文件?
【发布时间】:2022-01-15 04:42:44
【问题描述】:

我对其他方法持开放态度。这是我的限制:

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

这是我能做的:

  • 我了解如何使用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} 的父目录,其中我拥有所有镶木地板文件,使用与我正在创建的容器的连接AzureStorarrow::open_dataset() 只接受一个字符向量作为“源”参数。如果我只是给它带有路径的 URL,我不会传递任何类型的凭据来访问容器。

【问题讨论】:

    标签: r azure-blob-storage azure-storage parquet apache-arrow


    【解决方案1】:

    不幸的是,您今天可能无法完全从 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++ 代码。

    【讨论】:

    • 那真是太糟糕了。我们将尝试使用 Python,我可以在切换到 R 之前将其放在笔记本中。我们还可以修改 Blob 存储约束...... parquet 目录的某些子集可以首先移动到本地/网络驱动器,但这可能会得到昂贵,无论是美元还是时间
    • 这里有一个关于 pyarrow/adlfs 的简短介绍:arrow.apache.org/docs/python/… 但我没有亲自尝试过。
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 2020-07-27
    • 2022-07-14
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 2021-11-27
    • 2021-10-11
    相关资源
    最近更新 更多