我有两个CSV文件:
Identity(no,name,Age)
有10行Location(Address,no,City)
有100行我需要提取行并检查no
中带有Identity
CSV文件的Location
列。
从Identity
CSV文件中获取单行,并在Identity.no
CSV文件中检查Location.no
Location
行有100行。
如果匹配,请合并name, Age, Address, City
Identity, Location
注意:我需要从Identity
获取第1行,将其与Location
CSV文件中的100行进行比较,然后获取第2行将其与100行进行比较。它将在Identity
CSV文件中继续最多10行。
整体结果转换为Json。然后将结果移到SQL Server。
是否可以在Apache Nifi中使用?
任何帮助表示感谢。
答案 0 :(得分:2)
您可以使用DistributedMapCache功能在NiFi中执行此操作,该功能实现了用于查找的键/值存储。该设置需要一个分布式地图缓存,以及两个流 - 一个用您的地址记录填充缓存,另一个用no
字段查找地址。
DistributedMapCache由两个控制器服务定义,DistributedMapCacheServer和DistributeMapCacheClientService。如果您的数据集很小,您可以使用" localhost"作为服务器。
填充缓存需要读取地址文件,拆分记录,提取no
密钥,并将键/值对放入缓存。近似流程可能包括GetFile - > SplitText - > ExtractText - > UpdateAttribute - > PutDistributedMapCache
查找您的身份记录实际上与上面的流程非常相似,因为它需要读取身份文件,拆分记录,提取no
密钥,然后提取地址记录。处理器流程可能包括GetFile - > SplitText - > ExtractText - > UpdateAttribute - > FetchDistributedMapCache
您可以使用AttributesToJSON或者ExecuteScript将整个或部分从CSV转换为JSON。