如何在不改变字节的情况下将字符串转换为浮点?

2024-06-24 11:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据在通过卡夫卡发送并存储在S3上时编码不正确。你知道吗

它是使用Debezium MySQL连接器以十进制形式插入Kafka的,该连接器遵循以下规则:

decimal typing rules

创建的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中。我的直觉是,字节是正确的,但它不应该被表示为字符串,而应该被表示为一个浮点数。你知道吗

示例:

  • “JiU8”应该是24999.00
  • “JiDw”应为24988.00
  • “RxFc”应为46575.00
  • “LyZQ”应为30900.00

我试过使用struct和ord,但似乎找不到正确的组合将其转换回float形式。你知道吗

以下是我的一些尝试:

>>> struct.unpack('f','JiU8');
(5.088121542939916e-05,)
>>> struct.unpack('>f','JiU8');
(3822926.0,)

我有一个apachespark作业(python2.7)从S3读取数据并将数据移动到OLAP数据库中,因此我希望在插入数据库之前用Python解决数据问题。你知道吗


Tags: 数据name数据库编码s3typeconnect读取数据
1条回答
网友
1楼 · 发布于 2024-06-24 11:54:51

您可以设置连接器的十进制处理模式string(请参见here),这可以帮助您使值更容易在接收器端使用。你知道吗

相关问题 更多 >