如何将存储在 avro 文件中的 org.apache.kafka.connect.data.Decimal 转换为 python 类型?

Rav*_*ila 5 python apache-kafka apache-kafka-connect debezium

我正在尝试使用Python解释DebeziumKafka 中存储的Avro记录

           {
              "name": "id",
              "type": {
                "type": "bytes",
                "scale": 0,
                "precision": 64,
                "connect.version": 1,
                "connect.parameters": {
                  "scale": "0"
                },
                "connect.name": "org.apache.kafka.connect.data.Decimal",
                "logicalType": "decimal"
              }
            }
Run Code Online (Sandbox Code Playgroud)

我不确定这对应于哪种 Python 3 原始类型。如何反序列化这个值?

提前致谢!

Tar*_*ani 2

如果你看

https://github.com/apache/kafka/blob/trunk/connect/api/src/main/java/org/apache/kafka/connect/data/Decimal.java

public static byte[] fromLogical(Schema schema, BigDecimal value) {
    if (value.scale() != scale(schema))
        throw new DataException("BigDecimal has mismatching scale value for given Decimal schema");
    return value.unscaledValue().toByteArray();
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它使用 BigDecimal ,这相当于Decimal在 python 中

Java 的 BigDecimal 的 python 是什么?

所以在这种情况下你应该寻找 Decimal。

第 2 部分 - 反序列化

关于反序列化,我需要反馈来更新答案。到目前为止,您在其他领域是如何做到这一点的?

  • 如何在java中转换org.apache.kafka.connect.data.Decimal?当前值看起来像“FGk=”我想将其转换为可读的数值。 (2认同)