亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python - 將avro字節邏輯類型十進制反序列化為十進制

python - 將avro字節邏輯類型十進制反序列化為十進制

aluckdog 2021-06-10 14:16:25
我正在嘗試使用 python avro 庫(python 2)讀取 Avro 文件。當我使用以下代碼時:import avro.schemafrom avro.datafile import DataFileReader, DataFileWriterfrom avro.io import DatumReader, DatumWriter, BinaryDecoderreader = DataFileReader(open("filename.avro", "rb"), DatumReader())schema = reader.meta然后它正確讀取每一列,除了保留為字節的列,而不是預期的十進制值。如何將此列轉換為預期的十進制值?我注意到文件的元數據將列標識為 'type' : 'bytes',但 'logicalType' :'decimal'我在此列的元數據以及字節值(預期的實際值都是小于 25,000 的 1,000 的倍數)下方發布。該文件是使用 Kafka 創建的。元數據: {                            "name": "amount",                            "type": {                                "type": "bytes",                                "scale": 8,                                "precision": 20,                                "connect.version": 1,                                "connect.parameters": {                                    "scale": "8",                                    "connect.decimal.precision": "20"                                },                                "connect.name": "org.apache.kafka.connect.data.Decimal",                                "logicalType": "decimal"                            }                        }字節值:'E\xd9d\xb8\x00''\x00\xe8\xd4\xa5\x10\x00''\x01\x17e\x92\xe0\x00''\x01\x17e\x92\xe0\x00'預期值:3,000.0010,000.0012,000.005,000.00我需要在部署在 AWS 上的 Lambda 函數中使用它,因此不能使用 fast_avro 或其他使用 C 而不是純 Python 的庫。請參閱以下鏈接:https : //pypi.org/project/fastavro/ https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

為此,您需要使用該fastavro庫。無論是avroavro-python3圖書館沒有在此張貼的時候支持邏輯類型。


查看完整回答
反對 回復 2021-06-15
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

出于某種原因,fastavro 包在同一個文件上默認工作。我最終使用了下面的代碼。仍然不確定是否有辦法直接使用 avro 庫解決這個問題,或者反序列化上面問題中發布的輸出。


import fastavro

with open("filename.avro", 'rb') as fo: 

    for record in fastavro.reader(fo): 

        print(record) 


查看完整回答
反對 回復 2021-06-15
  • 3 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號