繁体   English   中英

使用kafka-connect将数据提取到s3时如何基于json字段的一部分进行分区

[英]How to partition based on part of json field when using kafka-connect to ingest data to s3

我正在尝试使用s3-sink kafka连接器将一些json数据存储到s3中。 我的json格式如下:

{
   "server": someserver,
   "id": someid,
   "time": "2018-01-18T23:47:03.737487Z"
}

我想根据数据所在的小时数对数据进行分区,但是忽略了分钟和秒。 例如。 上面的json将属于2018-01-18T23目录。 我应该如何在属性文件中设置field.partition来实现这一目标?

非常感谢!

Confluent的S3连接器实现描述的一种粗略方法是:

  • 将属性timestamp.extractor定义为RecordField ,以从记录中的字段中提取时间戳。
  • 将属性timestamp.field设置为该记录字段的名称(示例中的time
  • 设置path.format属性。 如示例中所述,这将使您最多可以将文件存储到一个小时,而忽略了更精细的粒度(分钟,秒等)。
  • 还要将partition.duration.ms设置为有意义的粒度。 重要的是默认值-1不允许您使用基于时间的分区。
  • 最后,如果您使用的是预定义分区程序之一或相关的自定义基于时间的分区程序,也请设置属性localetimezone

请注意,连接器附带了一个预定义的基于时间的分区程序类,您可能会发现该类对您的用例有用。 您可以通过以下方式使用它:

partitioner.class=io.confluent.connect.storage.partitioner.HourlyPartitioner

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM