通过Kafka发送并存储在S3上时,我的数据编码错误。
使用Debezium MySQL连接器将其作为小数插入Kafka,遵循以下规则:
创建的Avro架构的相关部分如下所示:
{
"name": "PRICE_SELLING",
"type": [
"null",
{
"type": "bytes",
"scale": 2,
"precision": 64,
"connect.version": 1,
"connect.parameters": {
"scale": "2"
},
"connect.name": "org.apache.kafka.connect.data.Decimal",
"logicalType": "decimal"
}
],
"default": null
}
问题在于,当我从主题中读取数据并写入S3时,它最终在S3中作为一串字母结束。这是我的直觉,字节是正确的,但不是表示为字符串,它应该只表示为浮点数。
示例:
我尝试过使用struct和ord,但似乎无法找到合适的组合将其转换回浮动形式。
以下是我的一些尝试:
>>> struct.unpack('f','JiU8');
(5.088121542939916e-05,)
>>> struct.unpack('>f','JiU8');
(3822926.0,)
我有一个Apache Spark作业(Python 2.7)从S3读取并将数据移动到OLAP数据库中,所以我希望在插入数据库之前我可以用Python修复数据问题。