Apache NiFi:UpdateRecord 处理器返回 java.lang.NumberFormatException 错误

Apache NiFi: UpdateRecord processor retunrs java.lang.NumberFormatException error

请教一个问题,在将电子商务信息以csv 文件形式发送到BigQuery 时出现问题。在csv中,ORDER_DATE列的值应该进入BigQuery中DATETIME类型列中的yyyy-MM-dd HH:mm:ss格式,试图在Google上找到一些参考。

环境

尝试 1

替换值策略被选择为文字值/ORDER_DATE被添加为新字段。取值如下:

${field.value:toDate('yyyyMMddhhmmss','GMT'):format('yyyy-MM-dd hh:mm:ss', 'GMT')}

症状如下:

尝试 2

找到新的参考资料,发现NiFi表达式有误,所以换了个方法:

${field.value:equals('0'):ifElse('', ${field.value:replace(${field.value},${field.value:toDate('yyyyMMddHHmmss'):format('yyyy-MM-dd HH:mm:ss'):toString()})})}

同样的症状如下:

有人让我打开日志,查了一下是这样的:

java.lang.NumberFormatException: For input string: "2022-01-08 15:22:17"

有什么想法吗?谢谢:)

使用 UpdateRecord 解决了问题而不添加到上游 ValidateCSV

控制器服务中,CSVReaderCSVRecordSetWriter修改如下:

  • 已将处理器 CSVReader 的 属性 Schema Access Strategy 更改为 User String Fields From Header
  • 将所有属性更改为处理器的默认值 CSVRecordSetWriter


测试结果如下:

  • GenerateFlowFile中将下面的文字改为格式yyyyMMddHmmss被制作成csv

  • 待修改的NiFi表达式UpdateRecord

  • CSVRecordSetWriter 保留默认设置并设置 CSVReader 如下

  • 完成以上设置后,可能会转换值不报错



在错误日志中搜索查看文件,找到了原因。好像推断的是string类型,结果是float类型,导致上面的错误。

感谢您的评论。 @VikramsinhShinde @Sdairs