由于时间戳,在 Apache Ni-Fi 中使用 PutInfluxDatabaseRecord 时出错

Error when using PutInfluxDatabaseRecord in Apache Ni-Fi due to time stamp

我创建了一个 Apache Ni-Fi 流程 1 以从 MySQL 服务器获取一个简单的 table 并在一些数据转换后将其复制到 InfluxDB 中。

我使用 PutInfluxDataRecord 处理器将数据从 AVRO 格式转换为内联协议并将数据插入 Influx(通过使用 StandardInfluxDatabaseService 1.15.0-SNAPSHOT 控制器服务)。

在 Avro Reader 1.15.2 控制器服务中,我选择了模式访问策略选项:使用嵌入式 Avro 模式。

在 PutInfluxDataRecord 处理器的属性中,我将时间戳字段的值 属性 设置为“time_stamp”,这是包含输入流中时间戳的字段的名称处理器。

当运行流时,出现如下错误:

PutInfluxDatabaseRecord[id=6d21f785-017e-1000-e0da-0528ab2de725] Failed procession flow file f0c553ef-7a4b-414c-bd9f-be2c6b7bf4f5 due to For input string: "2021-01-11 09:00:00.0": java.lang.NumberFormatException: For input string: "2021-01-11 09:00:00.0"

在 PutInfluxDatabaseRecord 处理器的 属性 选项卡中,在时间戳字段 属性 的帮助文本中,它表示支持的类型是:java.util.Date、java.lang.Number和 java.lang.String.

有什么提示可以解决这个问题吗?

谢谢,

贝尔纳多

Apache Ni-Fi flow

我通过更改用于从 MySQL 服务器获取数据的 QueryDatabaseTable 处理器中的设置解决了这个问题。我做了以下更改:

使用 Avro 逻辑类型:true

这阻止了 Ni-Fi 将 time_stamp 设置为字符串。