Как передать сообщения Кафки в сток HDFS при достижении определенного размера (128 Мб) - PullRequest
1 голос
/ 23 апреля 2019

Моя конфигурация: Confluent (5.0.0) Kafka выдает несколько авро-сообщений. Рабочий Connect (приемник коннектора HDFS) передает эти сообщения на узел HDFS в формате Parquet. Я настроил функцию подключения к работнику для отправки сообщений в HDFS каждые 5000 сообщений (flush.size=5000). Этот конфиг работает отлично.

Мой вопрос: есть ли обходной путь для фиксации сообщений при достижении точно 128 МБ (или 256 МБ), а не по количеству сообщений?

Файл конфигурации My HDFS Connector:

name=hdfs-sink
connector.class=io.confluent.connect.hdfs.HdfsSinkConnector
format.class=io.confluent.connect.hdfs.parquet.ParquetFormat
tasks.max=1
topics=some_topic
hdfs.url=hdfs://hdfshost:8020/user/someuser/kafka_hdfs_sink/
flush.size=5000

1 Ответ

1 голос
/ 23 апреля 2019

Такой конфигурации нет - см. Этот открытый вопрос

Обходным путем будет узнать, в среднем, насколько велико каждое сообщение для тем (в одном разделе Kafka, потому что так записываются файлы), затем установить flush.size соответственно, чтобы приблизительно достичь коэффициента HDFS. размер блока.

Если вы используете TimeBasedPartioner, то вам нужно будет знать либо количество сообщений, либо время, когда ваши сообщения достигнут вашего целевого размера.

...