Я настроил HDFS Kafka Connect для работы на Azure Datalake, однако я только что заметил, что ключи (строки) в любом случае не сохраняются, только значения Avro.
Когда я думаю об этом, я предполагаю, что это имеет смысл, так как разделение, которое я хочу применить в озере данных, не связано с ключом, и я не указал какую-либо новую схему Avro, которая включает ключ String в существующую схему значений Avro. .
Теперь в конфигурациях, которые я предоставляю при запуске сценария connect-distributed.sh, у меня есть (среди других конфигураций)
...
key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://<ip>:<port>
...
Но в фактическом коннекторе приемника, который я установил с помощью curl, я просто указываю формат вывода как
...
"format.class": "io.confluent.connect.hdfs.avro.AvroFormat"
...
поэтому соединитель предполагает, что значение Avro должно быть записано.
Итак, у меня два вопроса. Как мне сообщить соединителю, что он должен сохранить ключ вместе со значением как часть новой схемы Avro, и где я могу определить эту схему?
Обратите внимание, что это кластер Azure HDInsight, поэтому он не является решением Confluent Kafka (хотя у меня был бы доступ к коду с открытым исходным кодом, например Kafka Connect HDFS)