我有一个像这样的 csv
文件:
ProductId,CategoryId
1,1
1,2
1,3
2,1
2,2
2,3
...
... nearly 1 million records
从这个 csv
,我想产生另一个 csv
,如下所示:
ProductId,CategoryId,ProductName,CategoryName
1,1,Shirt,Mens
1,2,Boys
1,3,Uni
2,Watch,Mens
2,Boys
2,Uni
为此,我设置了 NiFi 流程如下:
GetFile
-> LookupRecord
-> uses SimpleDatabaseLookupService to query DB table "PRODUCT" using ProductId to get ProductName
-> uses CSVRecordSetWriter to write the ProdcutName value back to the CSV
-> LookupRecord
-> uses SimpleDatabaseLookupService to query DB table "CATEGORY" using CategoryId to get CategoryName
-> uses CSVRecordSetWriter to write the CategoryName value back to the CSV
这有效,至少在大约有 40K 行的文件上是有效的。但是,只要我输入包含超过一百万条记录的原始文件,NiFi 就会挂起。
所以我的问题是: 有没有办法优化我的流程,可以处理这么大的数据集?
注意:我的文件中有重复的 ProductId 和 CategoryId。我当前的流程为每一行执行。我想知道是否可以利用这个事实来优化流程,但我不知道如何。任何帮助将不胜感激。谢谢。