2017-06-03 67 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文件。 –