繁体   English   中英

使用谷歌云数据流读取多个镶木地板文件时如何判断记录来自哪个文件

How to tell which file a record came from when reading multiple parquet files with google cloud dataflow

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要能够将血统追溯到单个 parquet 文件,并能够执行批量加载,例如,如果要在数据流中发现缺陷,则重播几年的 parquet 文件。

经过多次尝试,以下内容适用于批量加载,其中 options.input 是RuntimeValueProvider而 SplitFn 只yields str.split()

with beam.Pipeline(options=PipelineOptions(), argv=args) as p:
    mainPipe = p \
        | 'CSV of URIs' >> beam.Create([options.input]) \
        | 'Split URIs into records' >> beam.ParDo(SplitFn(',')) \
        | "Read Parquet" >> beam.io.parquetio.ReadAllFromParquet(columns=[k for k in fields.keys()]) 

不幸的是, beam.io.parquetio.ReadAllFromParquet不会说每条记录来自哪个文件, ReadFromParquetparquetio的唯一其他 function 也不会。

除了离开 Google Cloud Dataflow 或教导团队 Java 之外,我还能如何将多个 parquet 文件一次加载到 BigQuery 并知道每条记录来自哪个文件?

1 个回复

鉴于当前的 API 我没有看到为此的预制解决方案。 虽然您可以通过以下任一方式解决问题:

  • 扩展/修改ReadAllFromParquet到 append 文件名到 output。
  • 使用BQ 工具从 parquet 导入。 我不确定他们是否有完全相同的场景。
3 使用Apache Beam和ParquetIO读取多个Parquet文件

我需要在Apache Beam中读取多个实木复合地板文件,所有文件都放在同一文件夹中。 我尝试使用通配符*读取它。 我设法使用ParquetIO读取了分离的实木复合地板文件,这是我读取一个实木复合地板文件的代码段: 其中filePath是例如/path/xxx.parquet。 ...

6 使用 Apache 箭头读取 Parquet 文件

我有一些使用 PyArrow(Apache Arrow)在 Python 中编写的 Parquet 文件: 现在我想使用 Java 程序读取这些文件(最好是获取箭头表)。 在 Python 中,我可以简单地使用以下命令从我的 Parquet 文件中获取箭头表: Java 中是否有等效且简单的解决方 ...

7 如何使用Spark Core API读取Parquet文件?

如何使用Spark Core API读取Parquet文件? 我知道使用Spark SQL有一些方法可以读取镶木地板文件。 但我们不能将Spark SQL用于我们的项目。 难道我们必须使用newAPIHadoopFile的方法JavaSparkContext做到这一点? 我正 ...

8 使用 Vaex 读取 Parquet 文件

我正在尝试使用 Vaex 从 Parquet 文件将一些数据读入 python。 这是我使用vaex.open函数得到的输出。 数据帧的长度是正确的,但我不明白1048576与什么有关。 我找到了有关读取 hdf5 文件的先前答案,但它似乎与我的问题无关。 数据最初是从 csv 文件中读取的, ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM