【问题标题】:Nifi Broken Pipe ExecuteStreamCommandNifi断管ExecuteStreamCommand
【发布时间】:2019-06-28 16:26:32
【问题描述】:

在 Nifi 中,我正在运行一个 ExecuteStreamCommand 处理器,该处理器正在调用 python 脚本并将 flowFile 传递给 stdin(忽略 StdIN:False)。即使 python 脚本正确执行并且能够从标准输入中读取,我也会从处理器中得到持续的错误。为什么会出现此错误,我该如何调试/抑制它?

Failed to write flow file to stdin due to Broken pipe: java.io.IOException: Broken pipe

Pandas 用于从标准输入读取:

df = pd.read_csv(sys.stdin, usecols=schema_map.keys(),
                     nrows=50, dtype=parse_schema(schema_map))

【问题讨论】:

  • 您能否分享您的ExecuteStreamCommand 处理器的配置以及来自$NIFI_HOME/logs/nifi-app.log 的其他日志?看来 Java (NiFi) 无法将流文件内容写入 STDIN。
  • 另外请分享您从标准输入读取的python代码部分。
  • 我检查了 nifi-app.log 但没有看到任何与 stdin 或 executeStreamCommand 相关的内容(该日志恰好被来自 fetchS3 处理器的周期性 S3 访问拒绝错误淹没)。会不会是无法写入stdin的flowFile是上游处理器的错误?

标签: apache-nifi


【解决方案1】:

显示此错误是因为 NiFi 未能持久化流文件状态以便能够显示其历史记录。

当您生成一个小的测试流文件(读取一个非常小的 csv 文件)时,这个错误是否仍然出现?如果是这样,则可能是大文件导致超时。

作为参考,this 是引发异常的代码行。

我可以通过忽略标准输入来解决这个问题,但在你的情况下,我猜你可以将数据写入文件并传递路径。

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2019-07-12
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多