从 HDFS 集群读取 Parquet 文件

Read Parquet Files from HDFS cluster

寻找有关如何使用 Apache Nifi 从 hdfs 集群读取镶木地板文件的建议。在集群中,单个目录下存在多个文件,希望在一个流程中读取所有文件。 Nifi 是否提供内置组件来读取 HDFS 目录(在本例中为 parquet)中的文件?

示例-目录中存在 3 个文件-

hdfs://app/data/customer/file1.parquet

hdfs://app/data/customer/file2.parquet

hdfs://app/data/customer/file3.parquet

谢谢!

如果您的要求是从 HDFS 读取文件,您可以使用 nifi-hadoop-bundle 中提供的 HDFS 处理器。您可以使用以下两种方法之一:

  • ListHDFSFetchHDFS
  • 的组合
  • GetHDFS

这两种方法的区别在于GetHDFS会一直列出为每个运行配置的目录的内容,因此会产生重复。然而,前一种方法会跟踪状态,因此在每个后续 运行 中仅返回新添加的 and/or 修改。

您可以将 FetchParquet 处理器与 ListHDFS/GetHDFS..etc 处理器结合使用。

此处理器从 NiFi-1.2 版本开始添加,Jira NiFi-3724 解决了此改进。

  • ListHDFS //存储状态,增量运行。
  • GetHDFS //不存储状态 get's all files from the configured directory (Keep source file 属性 设置为 True incase 你不想删除源文件).
  • 您可以使用其他一些方法(使用 UpdateAttribute..etc)将 完全限定的文件名作为属性 添加到流文件中,然后将连接提供给 FetchParquet 处理器,然后处理器获取那些镶木地板文件。

基于RecordWriter指定的FetchParquet处理器reads parquet files并按照RecordWriter指定的格式写入.

流量:

ListHDFS/GetHDFS -> FetchParquet -> other processors