Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Nifi将两个CSV流文件连接到特定的公共头上_Hadoop_Apache Nifi_Hortonworks Data Platform - Fatal编程技术网

Hadoop Nifi将两个CSV流文件连接到特定的公共头上

Hadoop Nifi将两个CSV流文件连接到特定的公共头上,hadoop,apache-nifi,hortonworks-data-platform,Hadoop,Apache Nifi,Hortonworks Data Platform,尝试以csv格式合并两个传入的流文件,并准备一个组合的csv输出,其中包含基于某个公共头值的来自两者的数据 需要根据“创建日期”和“一天中的小时数”合并行,并使用“源计数”和“配置单元计数”之间的计算差值合并两个流文件。。如果输入_2缺少输入_1的某个创建日期/小时,我需要在“差异”标题下加上“不可用” 如何在Nifi中实现这一点?是否有一种方法可以使用MergeContent加入并对输出文件运行查询以生成差异 任何帮助都将不胜感激。:) 源\输入\ 1 源\输入\ 2 组合输出 ApacheN

尝试以csv格式合并两个传入的流文件,并准备一个组合的csv输出,其中包含基于某个公共头值的来自两者的数据

需要根据“创建日期”和“一天中的小时数”合并行,并使用“源计数”和“配置单元计数”之间的计算差值合并两个流文件。。如果输入_2缺少输入_1的某个创建日期/小时,我需要在“差异”标题下加上“不可用”

如何在Nifi中实现这一点?是否有一种方法可以使用MergeContent加入并对输出文件运行查询以生成差异

任何帮助都将不胜感激。:)

源\输入\ 1

源\输入\ 2

组合输出


ApacheNIFI通常不会执行这些类型的流连接

它可以做的连接更多的是查找连接,其中数据的一侧是固定的,另一侧来自传入流。这就是查找服务的工作原理,我相信有一个CSV查找服务

另一个选项是将数据插入数据库,然后使用ExecuteSQL发出SQL查询,将它们连接在一起,并将结果写入单个流文件

最后,您可以使用流处理系统,如Spark、Flink、Storm等,它们都具有真正的流连接


MergeContent旨在将“类似”数据合并在一起,因此,如果所有数据都是具有相同列的CSV,并且您使用该数据创建了多个流文件,那么您可以将它们全部合并到一个大的CSV中。

Apache NiFi通常不会执行此类流连接

它可以做的连接更多的是查找连接,其中数据的一侧是固定的,另一侧来自传入流。这就是查找服务的工作原理,我相信有一个CSV查找服务

另一个选项是将数据插入数据库,然后使用ExecuteSQL发出SQL查询,将它们连接在一起,并将结果写入单个流文件

最后,您可以使用流处理系统,如Spark、Flink、Storm等,它们都具有真正的流连接


MergeContent旨在将“相似”数据合并在一起,因此,如果所有数据都是具有相同列的CSV,并且您可以使用该数据创建多个流文件,那么您可以将它们全部合并到一个大的CSV中。

@奇怪者认为这种方法可能会有所帮助

使用QueryRecord processor连接记录并生成具有不同属性的行:

select fa.t, fa.v a, fb.v b, fc.v c
 from (
   select t, v from FLOWFILE where m = 'a'
 ) fa
 left join (
   select t, v from FLOWFILE where m = 'b'
 ) fb on fa.t = fb.t
 left join (
   select t, v from FLOWFILE where m = 'c'
 ) fc on fa.t = fc.t
更多信息请访问
@奇怪的人认为这种方法可能会有所帮助

使用QueryRecord processor连接记录并生成具有不同属性的行:

select fa.t, fa.v a, fb.v b, fc.v c
 from (
   select t, v from FLOWFILE where m = 'a'
 ) fa
 left join (
   select t, v from FLOWFILE where m = 'b'
 ) fb on fa.t = fb.t
 left join (
   select t, v from FLOWFILE where m = 'c'
 ) fc on fa.t = fc.t
更多信息请访问

NIFI不像Talend那样是ETL。尝试合并不同的数据流不是一个好主意/设计。NIFI不像Talend那样是ETL。尝试合并和合并不同的数据流不是一个好主意/设计。感谢insight@Bryan。它实际上是一个现有流程的衍生产品,我正试图利用它来生成组合输出。由于原始流程已经存在于nifi中,我正在探索如何最好地提取它。我设法从两个不同的流中生成csv,现在考虑在编写类似的东西之前将它们加入nifi本身?唯一的区别是,我也有互斥的头,我想包括在最终输出中。提前感谢哇,这是一个有趣的方法,Koji就是那个人!我认为,只有当你能让每个CSV都有超集列时,它才会起作用,即使某些列对于insight@Bryan来说总是空的。它实际上是一个现有流程的衍生产品,我正试图利用它来生成组合输出。由于原始流程已经存在于nifi中,我正在探索如何最好地提取它。我设法从两个不同的流中生成csv,现在考虑在编写类似的东西之前将它们加入nifi本身?唯一的区别是,我也有互斥的头,我想包括在最终输出中。提前感谢哇,这是一个有趣的方法,Koji就是那个人!我认为只有当你能让每个CSV都有超集列,即使有些列总是空的,它才会起作用
creation_Date,hour_of_day,source_count,hive_count,difference
2018-08-16,0,3278,3279,-1
2018-08-16,1,10680,10680,0
2018-08-16,2,14199,14199,0
2018-08-16,3,19934,19933,1
2018-08-16,4,19705,19700,5
2018-08-16,5,672,0,(NotAvailable)
select fa.t, fa.v a, fb.v b, fc.v c
 from (
   select t, v from FLOWFILE where m = 'a'
 ) fa
 left join (
   select t, v from FLOWFILE where m = 'b'
 ) fb on fa.t = fb.t
 left join (
   select t, v from FLOWFILE where m = 'c'
 ) fc on fa.t = fc.t