2017-06-03 83 views
1

我使用Confluent HDFS連接器將數據從Kafka主題移動到HDFS日誌文件。但是,當我運行這些命令:Apache-Kafka-Connect,Confluent-HDFS-Connector,未知魔術字節,Kafka-To-Hdfs

./bin/connect-standalone 等/模式的註冊表/ connect-avro-standalone.properties \ 等/卡夫卡連接-HDFS/quickstart-hdfs.properties

我正在跟蹤錯誤。我怎麼解決這個問題。這是什麼原因?

造成的:org.apache.kafka.common.errors.SerializationException: 錯誤反序列化的ID -1所致的Avro消息: org.apache.kafka.common.errors.SerializationException:未知的魔法 字節! [2017年6月3日13:44:41895] ERROR任務正在被殺死,將 不能恢復,直到手動重新啓動 (org.apache.kafka.connect.runtime.WorkerTask:142)

回答

1

會發生這種情況,如果您正在嘗試讀取數據讀取連接器,並將key.converter和value.converter設置爲AvroCoverter,但您的輸入主題具有未使用模式註冊表的相同AvroSerializer序列化的數據。您必須將您的轉換器與輸入數據相匹配。換句話說,要使用可以反序列化輸入數據的串行器。

+0

我該怎麼做? –

+0

將org.apache.kafka.connect.storage.StringConverter作爲key.converter和value.converter放入etc/schema-registry/connect-avro-standalone.properties中,而不是該文件中的當前值。 – dawsaw

+0

謝謝,但這還不夠。 Confluent移動.avro文件,但.avro文件只包含avro模式。不是數據。然而卡夫卡話題有很多數據。 hadoop的罐子/home/hadoop/avro-tools-1.7.7.jar getmeta /topics/kafka_log_test/partition=0/kafka_log_test+0+0000000018+0000000020.avro >此命令的結果: 阿夫羅。 schema {「type」:「record」,「name」:「myrecord」,「fields」:[{「name」:「f1」,「type」:「string」}],「connect.version」 「connect.name」:「myrecord」} 如何發送帶有數據的.avro文件。 –