gpt4 book ai didi

使用apache箭头读取一个R数据帧中的分区 Parquet 目录(所有文件)

转载 作者:行者123 更新时间:2023-12-03 16:05:31 25 4
gpt4 key购买 nike

如何用箭头将分区的 Parquet 文件读入R中(没有任何 Spark )

情况

  • 使用Spark管道创建 Parquet 文件并保存在S3上
  • 使用RStudio/RShiny读取,其中一列作为索引以做进一步分析

  • Parquet 文件结构

    从我的Spark创建的 Parquet 文件包含几个部分
    tree component_mapping.parquet/
    component_mapping.parquet/
    ├── _SUCCESS
    ├── part-00000-e30f9734-71b8-4367-99c4-65096143cc17-c000.snappy.parquet
    ├── part-00001-e30f9734-71b8-4367-99c4-65096143cc17-c000.snappy.parquet
    ├── part-00002-e30f9734-71b8-4367-99c4-65096143cc17-c000.snappy.parquet
    ├── part-00003-e30f9734-71b8-4367-99c4-65096143cc17-c000.snappy.parquet
    ├── part-00004-e30f9734-71b8-4367-99c4-65096143cc17-c000.snappy.parquet
    ├── etc

    如何将这个component_mapping.parquet读入R?

    我尝试了什么
    install.packages("arrow")
    library(arrow)
    my_df<-read_parquet("component_mapping.parquet")

    但这失败并显示错误
    IOError: Cannot open for reading: path 'component_mapping.parquet' is a directory

    如果我只读取目录的一个文件,它将起作用
    install.packages("arrow")
    library(arrow)
    my_df<-read_parquet("component_mapping.parquet/part-00000-e30f9734-71b8-4367-99c4-65096143cc17-c000.snappy.parquet")

    但我需要全部加载才能对其进行查询

    我在文档中找到的内容

    在apache箭头文档中
    https://arrow.apache.org/docs/r/reference/read_parquet.html
    https://arrow.apache.org/docs/r/reference/ParquetReaderProperties.html
    我发现那里有一些read_parquet()命令的属性,但是我无法使它正常工作,也找不到任何示例。
    read_parquet(file, col_select = NULL, as_data_frame = TRUE, props = ParquetReaderProperties$create(), ...)

    如何正确设置属性以读取完整目录?
    # should be this methods
    $read_dictionary(column_index)
    or
    $set_read_dictionary(column_index, read_dict)

    帮助将不胜感激

    最佳答案

    通过设置(单个)文件阅读器选项无法读取文件目录。如果没有内存问题,今天您可以将目录列表中的lapply/maprbind/bind_rows合并到单个data.frame中。可能有一个purrr函数可以很干净地执行此操作。在文件的迭代中,如果只需要数据的已知子集,则还可以对每个文件进行选择/过滤。

    在Arrow项目中,我们正在积极开发多文件数据集API,该API可让您执行您想做的事情,并将行和列选择下推到单个文件等等。敬请关注。

    关于使用apache箭头读取一个R数据帧中的分区 Parquet 目录(所有文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58439966/

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