什么是Avro架构名称空间的有效(和无效)字符

时间:2019-12-30 19:36:58

标签: namespaces avro

我有一个Avro模式,其名称空间为“ ca.gms.api-event-log”。我已使用此架构将消息序列化到Kafka,已在Kafka Schema Registry中成功注册了该架构,并且正在使用Kafka Connector将数据作为.avro文件发送到Amazon S3。到目前为止,没有问题。

我现在正尝试使用Azure Data Factory将数据从AWS S3复制到Azure,并且抱怨以下问题:

无法反序列化Avro源文件'topics / api-event-log / partition = 0 / api-event-log + 0 + 0000000000.avro'。这可能是由于无效的Avro数据引起的。检查数据,然后重试。命名空间“ ca.gms.api-event-log”包含无效字符。 。活动ID:12a7dda0-8cb7-4c79-a070-d366fddb1c00

“ ca.gms.api-event-log”是否真的包含无效字符?不允许使用连字符吗? Apache Avro规范似乎表明任何有效的JSON字符串都应该起作用:https://avro.apache.org/docs/current/spec.html

1 个答案:

答案 0 :(得分:1)

我注意到在Python avro客户端中不允许使用连字符,但是在Java API中可以使用连字符。

因此,它最终取决于所使用的解析器,但是我想说,经验法则是保持与Java包相同的命名规则,其中也不允许使用连字符。

注意:您可能应该尝试使用能够写入Azure的Kafka连接器,而不是支付S3存储+传输费。也不清楚为什么只复制原始文件,为什么甚至打开文件来检查架构