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



我有一个Avro模式,命名空间为"ca.gms.api-event-log"。 我已使用此架构将消息序列化为 Kafka,成功将该架构注册到 Kafka 架构注册表,并使用 Kafka 连接器将该数据作为 .avro 文件发送到 Amazon S3。 到目前为止,没有问题。

我现在正在尝试使用 Azure 数据工厂将该数据从 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

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

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

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

相关内容

  • 没有找到相关文章

最新更新