Мои данные были неправильно закодированы при отправке через Kafka и сохранены на S3.
Он был вставлен в Kafka в виде десятичного числа с использованием коннектора Debezium MySQL, который соответствует следующим правилам:

Соответствующая частьсоздаваемая схема 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 иОрд, но не могу найти правильную комбинацию, чтобы преобразовать ее обратно в форму с плавающей точкой.
Вот некоторые из моих попыток:
>>> struct.unpack('f','JiU8');
(5.088121542939916e-05,)
>>> struct.unpack('>f','JiU8');
(3822926.0,)
У меня есть задание Apache Spark (Python 2.7) чтение из S3 и перемещение данных в базу данных OLAP, поэтому я надеюсь, что смогу исправить проблему с данными в Python перед вставкой в базу данных.