Apache-Kafka-Connect , Confluent-HDFS-Connector , Unknown-magic-byte
Posted
技术标签:
【中文标题】Apache-Kafka-Connect , Confluent-HDFS-Connector , Unknown-magic-byte【英文标题】: 【发布时间】:2017-11-04 17:03:23 【问题描述】:我使用 Confluent HDFS 连接器将数据从 Kafka 主题移动到 HDFS 日志文件。但是当我运行这些命令时:
./bin/connect-standalone etc/schema-registry/connect-avro-standalone.properties \ etc/kafka-connect-hdfs/quickstart-hdfs.properties
我正在采取跟随错误。我怎么解决这个问题。这是什么原因?
引起:org.apache.kafka.common.errors.SerializationException: 为 id -1 反序列化 Avro 消息时出错原因: org.apache.kafka.common.errors.SerializationException:未知的魔法 字节! [2017-06-03 13:44:41,895] 错误任务正在被杀死并将 直到手动重新启动才能恢复 (org.apache.kafka.connect.runtime.WorkerTask:142)
【问题讨论】:
【参考方案1】:如果您尝试读取连接器的数据并将key.converter
和value.converter
设置为AvroConverter
,但您的输入主题的数据未由使用相同AvroSerializer
序列化架构注册表。
您必须将转换器与输入数据相匹配。换句话说,使用可以反序列化输入数据的序列化器。
【讨论】:
我该怎么做? 将 org.apache.kafka.connect.storage.StringConverter 作为 key.converter 和 value.converter 在 etc/schema-registry/connect-avro-standalone.properties 中,而不是其中的当前值文件。 谢谢,但这还不够 dawsaw 。 Confluent 移动 .avro 文件,但该 .avro 文件仅包含 avro 架构。不是数据。但是 kafka 主题有很多数据。 hadoop jar /home/hadoop/avro-tools-1.7.7.jar getmeta /topics/kafka_log_test/partition=0/kafka_log_test+0+0000000018+0000000020.avro >这个命令的结果:avro.schema "type": "record","name":"myrecord","fields":["name":"f1","type":"string"],"connect.version":1,"connect.name": "myrecord" 如何发送带有数据的 .avro 文件。 如果您只是希望将主题中的数据完全移至 hdfs,然后考虑使用 bytearrayconverter cwiki.apache.org/confluence/display/KAFKA/… 它已合并到处于发布候选阶段的 0.11。否则,您必须使用 AvroConverter,这意味着需要使用模式注册表将数据生成到 Kafka。看起来这不是您目前正在做的事情,所以我会说只需使用该 bytearrayconverter 并处理 hdfs 端的任何不良记录。以上是关于Apache-Kafka-Connect , Confluent-HDFS-Connector , Unknown-magic-byte的主要内容,如果未能解决你的问题,请参考以下文章