所以,我第一次使用NiFi。我正在尝试使用它来调用API,然后将数据传输到HDFS(Hortonworks Sandbox 2.4)。我目前只使用2个处理器:GetHTTP& PutHDFS。
我似乎已将两个处理器配置为正确...它们运行,但我无法找到当我通过Ambari进入Hadoop时创建的输出文件...我已将输出目录设置为/ user /,但没有出现。但是,我在PutHDFS处理器上收到一条警告信息,建议:
WARNING PutHDFS[...] penalizing StandardFlowFileRecord[...] and routing to failure because file with same name already exists.
...所以必须在某个地方写一个文件。我尝试改变指定xml和JSON格式的API调用,但没有明显区别。
我想我必须要么在NiFi中为管道添加一些处理,或者我在沙箱中找错了位置。有人可以提出建议吗?
答案 0 :(得分:3)
PutHDFS处理器读取传入的FlowFile上的“filename”属性,并将其用作HDFS中的文件名。如文档[1]中所述。
GetHTTP将“filename”属性设置为“..远程服务器上文件的名称”[2]。所以我猜你GetHTTP处理器每次都得到相同的文件,因此每个FlowFile上的“filename”属性都是相同的。
因此,为了解决该错误,您需要一个UpdateAttribute处理器[3],它将“filename”属性更改为唯一值。
答案 1 :(得分:0)
终于搞定了。构建了包含4个处理器的数据流:
我认为这是一个正确指定自动终止关系的案例(选择'成功'以及'失败')。
归功于提供构建基块的http://nifi.rocks/getting-started-with-apache-nifi,并感谢其他人的评论。