Оптимальная конфигурация подключения Kakfa Ежечасно S3AvroSink

#apache-kafka #apache-kafka-connect #s3-kafka-connector

Вопрос:

 {
  "name":"{{name}}",
  "tasks.max": "6", //have 6 partitions for this topic
  "topics": "{{topic}}",
  "connector.class": "io.confluent.connect.s3.S3SinkConnector",
  "key.converter": "io.confluent.connect.avro.AvroConverter",
  "key.converter.schemas.enable": "true",
  "key.converter.schema.registry.url": "xx",
  "key.converter.key.subject.name.strategy": "io.confluent.kafka.serializers.subject.TopicRecordNameStrategy",
  "value.converter": "io.confluent.connect.avro.AvroConverter",
  "value.converter.schemas.enable": "true",
  "value.converter.schema.registry.url": "xx",
  "value.converter.value.subject.name.strategy": "io.confluent.kafka.serializers.subject.TopicRecordNameStrategy",
  "errors.retry.timeout":"600000",
  "errors.log.enable":"true",
  "errors.log.include.messages":"true",



  "schema.compatibility": "BACKWARD",

  "format.class": "io.confluent.connect.s3.format.avro.AvroFormat",
  "flush.size": "100000",
  "rotate.schedule.interval.ms": "3600000",
  "rotate.interval.ms": "3600000",
  "enhanced.avro.schema.support": "true",
  "connect.meta.data": "false",


  "partitioner.class": "{{partitioner}}somepartitioner",
  "partition.duration.ms": "3600000",
  "path.format": "'avro/event=?eventClass?/tenant=?tenant?/date'=YYYY-MM-dd/'hour'=HH",
  "locale": "en",
  "timezone": "UTC",
  "timestamp.extractor": "RecordField",
  "timestamp.field": "{{timestampField}}",



  "storage.class": "io.confluent.connect.s3.storage.S3Storage",


  "s3.bucket.name": "somebucket",
  "s3.region": "region",
  "s3.part.size": "5242880",


  "offset.flush.interval.ms": "1200000"
}
 

Количество страниц в этой теме составляет около 739 180, а размер-1,1 Гб

Я не совсем уверен, полностью ли верна моя конфигурация или нет, могу ли я как-то ее улучшить. Я хочу промыть в двух случаях, ежечасно или если размер достигает 5 ГБ.

Комментарии:

1. Итак, во-первых, вы не должны использовать оба rotate.*.ms свойства. Кроме того, нет возможности записывать файлы в зависимости от размера файла, только количество сообщений. Итак, если вы знаете средний размер каждой записи, вы можете приблизить необходимый размер flush.size…. Кроме того, если вы получаете разные схемы Avro в рамках темы, файл всегда записывается, когда это происходит

2. какой из них мне следует использовать? И как я могу получить средний размер записи. вышеупомянутое количество/общий размер. 739 180/1,1 Гб(преобразовано в кб). я вижу два файла в ежечасном пути s3. каждый с размером в несколько килобайт.

3. Для ротации обратитесь к — github.com/confluentinc/kafka-connect-storage-cloud/issues/… и, как я уже сказал, если вы получите разные записи avro в этой теме, то вам следует ожидать много крошечных файлов, и вам нужно будет исправить, чтобы все ваши производители были на одной и той же версии. В противном случае у меня нет других предложений по созданию файлов большего размера; ваши единственные варианты основаны на времени (с очень большим количеством записей) или на количестве записей (с большим временем вращения), или на некоторой комбинации того и другого

4. спасибо, я думаю, что получил большую часть этого. Мне пришлось бы наблюдать за продюсером, чтобы в дальнейшем вносить какие-либо изменения