使用 Nifi 将数据提取到 HDFS - 无法访问文件
Ingesting data into HDFS using Nifi - can't access files
所以,我是第一次使用 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 中的管道添加一些处理,要么我在沙箱中查找错误的位置。请问有谁可以指点一下吗?
PutHDFS 处理器读取传入 FlowFile 的 "filename" 属性,并将其用作 HDFS 中的文件名。如文档[1]中所述。
GetHTTP 将 "filename" 属性设置为“..远程服务器上文件的名称”[2]。所以我猜你是 GetHTTP 处理器每次都获取相同的文件,因此 "filename" 属性在每个 FlowFile 上都是相同的。
因此,为了解决该错误,您需要一个 UpdateAttribute 处理器[3],它将 "filename" 属性更改为唯一值。
终于成功了。构建了一个包含 4 个处理器的数据流:
- getHTTP
- 评估 XPath
- 2 个 PutHDFS,一个用于 'matched',一个用于 'unmatched'
我认为这是正确指定自动终止关系的情况(在 中同时选择 'success' 和 'failure')。
感谢 http://nifi.rocks/getting-started-with-apache-nifi 提供了构建基块,感谢其他人的评论。
所以,我是第一次使用 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 中的管道添加一些处理,要么我在沙箱中查找错误的位置。请问有谁可以指点一下吗?
PutHDFS 处理器读取传入 FlowFile 的 "filename" 属性,并将其用作 HDFS 中的文件名。如文档[1]中所述。
GetHTTP 将 "filename" 属性设置为“..远程服务器上文件的名称”[2]。所以我猜你是 GetHTTP 处理器每次都获取相同的文件,因此 "filename" 属性在每个 FlowFile 上都是相同的。
因此,为了解决该错误,您需要一个 UpdateAttribute 处理器[3],它将 "filename" 属性更改为唯一值。
终于成功了。构建了一个包含 4 个处理器的数据流:
- getHTTP
- 评估 XPath
- 2 个 PutHDFS,一个用于 'matched',一个用于 'unmatched'
我认为这是正确指定自动终止关系的情况(在 中同时选择 'success' 和 'failure')。
感谢 http://nifi.rocks/getting-started-with-apache-nifi 提供了构建基块,感谢其他人的评论。