如何仅在hdfs中有文件时执行命令

1tuwyuhd  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(385)

我和nifi和hive在ambari的hdp snadbox里合作。
我有一个nifi流,将修改过的文件上传到hdfs,然后用generateflowfile传递查询 load data inpath 'hdfs/path/' into table tablename 到puthiveql处理器。
它工作得很好,但我只想在“hdfs/path”指定的路径中有文件时这样做,因为 load inpath 执行时,该hdfs目录将清空。
我不知道该怎么做。
非常感谢!!

x4shl7ld

x4shl7ld1#

使用 ListHDFS 处理器,并将处理器配置为频繁运行(如每分钟..等),目录属性值。
此处理器存储状态并以增量方式运行,仅当在目录中检测到新添加的文件时才输出流文件。
然后使用 ReplaceText 处理器
替换策略 AlwaysReplace 重置价值为 load data inpath '${path}/${filename}' into table tablename 然后将成功关系与 PutHiveQL 处理器执行加载数据命令。
流量:

1.ListHDFS
2.ReplaceText
3.PutHiveQL

相关问题