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