Nifi:Nifi 中的分隔符

Nifi: Delimiters in Nifi

我正在处理一项任务并遇到错误。这表示 封装令牌和定界符之间的字符无效。 这里是数据的SS

对于第 08 行,我使用 竖线 作为分隔符,转义字符是“^”。对于第 12 行,我使用 逗号 作为分隔符。突出显示的部分是问题。如果我从第 08 行删除大写符号并从第 12 行删除单引号,它就会成功运行。 处理器是 ConverRecord,这里是处理器配置的屏幕截图。

实际上,我使用了两个ConvertRecord处理器。在一个处理器中,字段分隔符是逗号 (,),而在第二个处理器中,字段分隔符也是逗号 (,),但转义字符是大写符号 (^)。

假设这是两条不同的记录。
为什么它在那个时候抛出错误?我该如何解决这个问题?

提前致谢。

对于第一个示例数据(第08行),将CSVReader配置为:

  • Quote Character: "
  • Escape Character: \
  • Value Separator(delimiter): |

第二个样本数据(第12行),配置CSVReader为:

  • Quote Character: "
  • Escape Character: \
  • Value Separator(delimiter): ,

失败的原因是你的数据不符合定界数据规范即数据无效,所以你需要添加上游清理逻辑。

对于第 08 行数据 - 您使用了转义字符 ^ 并且同样出现在数据中,所以当 CSVReader 遇到 ^" 它转义了 " 因为这个左双引号没有相应的右双引号导致抛出异常。所以设置 Escape Character: \ 属性 将解决问题。 \ 是一种广泛使用的转义字符,因此很少将 \ 作为数据的一部分。

对于第 12 行数据 - 似乎单引号 ' 用作 Quote Character 并且缺少相应的结束引号字符,即 ' 导致抛出异常。您需要设计一种逻辑,在需要时添加缺少的结束引号字符。一种解决方法是使用 Quote Character: " 以便 ' 将成为数据的一部分,然后您可以在下游例如清理它。如果您要将数据放入 table,则 post-ingestion 更新列以删除 '