如何使用Apache Nifi加入两个CSV

And*_*ill 4 etl apache-nifi

我正在研究ETL工具(如Talend)并调查是否可以使用Apache Nifi.可以使用Nifi执行以下操作:

  1. 选取放在本地磁盘上的两个CSV文件
  2. 将CSV加入公共列
  3. 将已加入的CSV写入磁盘

我已经尝试在Nifi中设置工作,但无法看到如何执行两个单独的CSV文件的连接.这个任务在Apache Nifi中是否可行?

看起来QueryDNS处理器可以用于使用另一个来执行一个CSV文件的丰富,但对于这个用例来说这似乎过于复杂.

以下是输入CSV的示例,需要在state_id上​​加入:

输入文件

customers.csv

id | name | address      | state_id
---|------|--------------|---------
1  | John | 10 Blue Lane | 100
2  | Bob  | 15 Green St. | 200
Run Code Online (Sandbox Code Playgroud)

states.csv

state_id | state
---------|---------
100      | Alabama
200      | New York
Run Code Online (Sandbox Code Playgroud)

输出文件

output.csv

id | name | address      | state
---|------|--------------|---------
1  | John | 10 Blue Lane | Alabama
2  | Bob  | 15 Green St. | New York
Run Code Online (Sandbox Code Playgroud)

Bry*_*nde 10

Apache NiFi更像是一种数据流工具,并不是真正用于执行流数据的任意连接.通常,这些类型的操作更适合于流处理系统,如Storm,Flink,Apex等,或ETL工具.

NiFi可以做得很好的连接类型是富集查找,其中有一个固定大小的查找数据集,对于传入数据中的每个记录,您使用查找数据集来检索某些值.例如,在您的情况下,可能有一个名为LookUpState的处理器,它具有一个属性"State Data",它指向包含所有状态的文件,那么customers.csv可以是该处理器的输入.

社区成员启动了一个项目,为NiFi制作通用查找服务:https: //github.com/jfrazee/nifi-lookup-service