如何仅当 hdfs 中有文件时才执行命令
How can i execute a command only when there are files in hdfs
我在 Ambari 的 HDP snadbox 中使用 NiFi 和 Hive。
我有一个 NiFi 流,我将修改后的文件上传到 hdfs,然后使用 generateflowfile,我将查询 load data inpath 'hdfs/path/' into table tablename
传递给 puthiveql 处理器。
效果很好,但我只想在 'hdfs/path' 指定的路径中有文件时才这样做,因为当命令 load inpath
执行时,hdfs 目录会清空。
我不知道我该怎么做。
非常感谢!!
使用 ListHDFS
处理器并将处理器配置为 运行 频繁(例如每分钟..等),目录 属性 值。
- 此处理器存储状态并递增 运行s,并且仅在目录中检测到新添加的文件时才输出流文件。
然后使用ReplaceText
处理器
- 替换策略为
AlwaysReplace
- 替换值为
load data inpath '${path}/${filename}' into table tablename
然后连接成功关系到PutHiveQL
处理器执行加载数据命令。
流量:
1.ListHDFS
2.ReplaceText
3.PutHiveQL
我在 Ambari 的 HDP snadbox 中使用 NiFi 和 Hive。
我有一个 NiFi 流,我将修改后的文件上传到 hdfs,然后使用 generateflowfile,我将查询 load data inpath 'hdfs/path/' into table tablename
传递给 puthiveql 处理器。
效果很好,但我只想在 'hdfs/path' 指定的路径中有文件时才这样做,因为当命令 load inpath
执行时,hdfs 目录会清空。
我不知道我该怎么做。
非常感谢!!
使用 ListHDFS
处理器并将处理器配置为 运行 频繁(例如每分钟..等),目录 属性 值。
- 此处理器存储状态并递增 运行s,并且仅在目录中检测到新添加的文件时才输出流文件。
然后使用ReplaceText
处理器
- 替换策略为
AlwaysReplace
- 替换值为
load data inpath '${path}/${filename}' into table tablename
然后连接成功关系到PutHiveQL
处理器执行加载数据命令。
流量:
1.ListHDFS
2.ReplaceText
3.PutHiveQL