【问题标题】:NiFi SplitJSON and ExecuteSQLNiFi SplitJSON 和 ExecuteSQL
【发布时间】:2017-07-19 01:01:52
【问题描述】:

在 NiFi 流程中,我想读取 JSON 结构,对其进行拆分,使用有效负载执行 SQL 查询,最后将每个结果输出到 JSON 文件中。

但是,我在ExecuteSQL 处理器中检索拆分的 FlowFile 属性的值时遇到问题。

  1. GenerateFlowFile 处理器,JSON 结构为 Custom Text

  1. SplitJSON,以数据为待拆分属性

  1. ExecuteSQL,使用SplitJSON's有效负载属性${id}

此时我收到一个 SQL 语法错误的日志错误。显然ExecuteQuery 处理器没有解析其SQL select query 属性上的表达式。

拆分 JSON 后是否还有任何中间处理需要完成?我错过了什么?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    SplitJsonExecuteSQL 之间需要一个额外的EvaluateJsonPath(或ExtractText)处理器——表达式语言表达式无法评估流文件内容以进行参数替换,因此您的SQL 表达式最终为SELECT * FROM foo WHERE id = ;这就是您有语法错误的原因。

    表达式语言从流文件属性中读取,因此您需要将 JSON 内容解析为可访问的属性。 EvaluateJsonPath 处理器正是这样做的。您需要做的就是添加一个自定义属性(单击属性对话框右上角的+)并将id 值从JSON 提取到流文件属性中。然后将此处理器的matched 关系连接到ExecuteSQL 处理器。

    【讨论】:

    • 啊,缺少的链接。谢谢你的时间,就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多