从HDFS集群读取Parquet文件

时间:2018-11-09 03:58:05

标签: apache-nifi

寻找有关如何使用Apache Nifi从hdfs集群读取实木复合地板文件的建议。在群集中,单个目录下存在多个文件,想要一次读取所有文件。 Nifi是否提供内置组件来读取HDFS目录(在这种情况下为镶木地板)中的文件?

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

此处理器从NiFi-1.2版本和Jira NiFi-3724开始添加,以解决此问题。

  • ListHD FS //存储状态并增量运行。
  • GetHDFS //不存储已配置目录中所有文件的状态get (在不需要时将源文件属性保留为True删除源文件)
  • 您可以使用其他方法(使用UpdateAttribute..etc)将完全限定的文件名作为属性添加到流文件,然后将连接提供给FetchParquet处理器,然后处理器获取这些镶木文件。

基于 RecordWriter 指定的FetchParquet处理器reads parquet files,并以 RecordWriter 中指定的格式写入它们。

流量:

ListHDFS/GetHDFS -> FetchParquet -> other processors

答案 1 :(得分:0)

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

  • ListHDFSFetchHDFS的组合
  • GetHDFS

两种方法之间的区别是GetHDFS将继续列出为每次运行配置的目录的内容,因此将产生重复项。但是,前一种方法会跟踪状态,因此在以后的每次运行中仅返回新的添加和/或修改。