【问题标题】:Apache Nifi Execute Process ProcessorApache Nifi 执行进程处理器
【发布时间】:2016-06-06 06:30:06
【问题描述】:

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

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

我有几个问题:

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

我无法向 ExecuteProcess 处理器提供任何传入的流文件。如果没有,有什么方法可以支持获取传入的流文件?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

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

    【讨论】:

    • 我需要更多说明。在我上面提到的工作流程中。执行 SQl 处理器将从 oracle db 中以 avro 格式获取数据并将这些数据保存在某个位置?我需要知道将这些数据放在哪里文件。因为按照流程下一步是 PutHdfs 处理器,它将文件从本地机器复制到 HDFS 位置。那么本地机器中的位置是什么?
    • 一旦数据在 NiFi 中,它就会保存在 NiFi 的内部存储库中,这些存储库由 conf/nifi.properties 中设置的属性控制。 ExecuteSQL 会从数据库中获取数据并创建一个流文件,将记录存储在 NiFi 的内容存储库中,然后它将流文件传输到连接到 PutHDFS 的成功关系,PutHDFS 将从内容存储库中读取记录,你会'真的不必知道它在哪里。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多