你不知道message.timestamp.input.pattern

secor ignores message.timestamp.input.pattern

我正在尝试使用 pinterest secor 将数据从 google 云存储加载到大查询,但大查询使用时间戳,如“2019-08-16 15:30:00”,而 secor JsonMessageParser 使用长整数值(大查询可以使用整数,但出于某种原因,当尝试将整数时间戳加载到大查询时,它将秒转换为微秒(添加 6 个零)然后抱怨时间戳超出范围)

设置为秒:

# Name of field that contains a timestamp, as a date Format, for JSON. (2014-08-07, Jul 23 02:16:57 2005, etc...)
# Should be used when there is no timestamp in a Long format. Also ignore time zones.
message.timestamp.input.pattern=ts

什么都不做,没有 message.timestamp.name 字段它使用“1970-01-01”时间戳日期。无论我在 message.timestamp.input.pattern 中设置什么,它似乎都被忽略了。

将 json 数据加载到具有“2019-08-16 15:30:00”等时间戳值的大查询中是可行的,但我无法让 secor 识别时间戳等值。

知道如何解决这个问题吗?

您可以编写 TimestampedMessageParser 的自定义实现。扩展此 class 并自定义 class。然后覆盖方法 extractPartitions(Message payload)parse(Message message)

方法二,从消息对象中获取字节数组mPayload。这将使您的 json 数据以字节的形式存在。使用任何 JSON 格式化程序来提取您的时间戳。然后将该时间戳更改为您想要的任何格式。然后将此 json 对象转换回字节数组,然后将其分配给消息对象的有效负载字节数组。 在第一种方法中,使用此更新值根据您的要求创建分区。