6

我正在尝试使用 Apache Nifi 实现以下工作流程:

  1. ExecuteSQL - 这是从 oracle 数据库中以 avro 格式获取数据
  2. PutHDFS - 这是将数据放入 hdfs
  3. ExecuteProcess – 此处理器在后台执行 bash 脚本,进而创建外部 hive 表

我有几个问题:

Apache Nifi 中的 ExecuteProcess 处理器是否接收传入的流文件?

我无法为 ExecuteProcess 处理器提供任何传入的流文件。如果没有,有没有办法支持获取传入的流文件?

4

2 回答 2

10

ExecuteProcess 不允许传入流文件。看一下 ExecuteStreamCommand 处理器,它接受传入的流文件并执行外部命令。

于 2016-06-06T16:59:18.153 回答
3

这种方法(使用 ExecuteStreamCommand)应该适用于当前的 NiFi 版本。NiFi 1.0.0 将有一个 ConvertAvroToORC 处理器,它可以将来自 ExecuteSQL 的 Avro 记录转换为更高效的 Hive ORC 格式,并且它还生成(到属性中)创建表所需的 Hive DDL(如果它没有已经存在)。还有一个可以执行该 DDL 的 PutHiveQL 处理器。

这应该消除上述流程中对 ExecuteStreamCommand 的需求。当 NiFi 1.0.0 发布时,我将在https://cwiki.apache.org/confluence/display/NIFI/Example+Dataflow+Templates发布一个示例模板。

于 2016-06-07T13:45:32.063 回答