python avro 数据格式使用demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "name" : "UEProcedures" , "type" : "record" , "fields" : [ { "name" : "imsi" , "type" : "string" }, { "name" : "time_at" , "type" : "string" }, { "name" : "procedures" , "type" : { "type" : "array" , "items" : { "type" : "record" , "name" : "SignalProcedure" , "fields" : [ { "name" : "timestamp" , "type" : "string" }, { "name" : "procedure_tag" , "type" : "string" } ] }} } ] } |
ue_procedure.avsc数据格式说明,python3 下的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import avro.schema from avro.datafile import DataFileReader, DataFileWriter from avro.io import DatumReader, DatumWriter schema = avro.schema.Parse( open ( 'ue_procedure.avsc' , "r" ).read()) writer = DataFileWriter( open ( "ue_procedures.avro" , "wb" ), DatumWriter(), schema) writer.append({ "imsi" : "UE001" , "time_at" : "2018-04-09 12:15" , "procedures" : [{ "timestamp" : "2019-04-09 12:01" , "procedure_tag" : "A" }, { "timestamp" : "2019-04-09 12:02" , "procedure_tag" : "B" }]}) writer.append({ "imsi" : "UE002" , "time_at" : "2018-04-09 12:15" , "procedures" : [{ "timestamp" : "2019-04-09 12:01" , "procedure_tag" : "A" }, { "timestamp" : "2019-04-09 12:02" , "procedure_tag" : "B" }]}) writer.close() reader = DataFileReader( open ( "ue_procedures.avro" , "rb" ), DatumReader()) for ue in reader: print (ue) reader.close() |
输出:
{'imsi': 'UE001', 'time_at': '2018-04-09 12:15', 'procedures': [{'timestamp': '2019-04-09 12:01', 'procedure_tag': 'A'}, {'timestamp': '2019-04-09 12:02', 'procedure_tag': 'B'}]}
{'imsi': 'UE002', 'time_at': '2018-04-09 12:15', 'procedures': [{'timestamp': '2019-04-09 12:01', 'procedure_tag': 'A'}, {'timestamp': '2019-04-09 12:02', 'procedure_tag': 'B'}]}
另外使用map的示例:
1 2 3 4 5 6 7 8 9 10 | { "name" : "UEStat" , "type" : "record" , "fields" : [ { "name" : "imsi" , "type" : "string" }, { "name" : "time_at" , "type" : "string" }, { "name" : "procedures_total_cnt" , "type" : "long" }, { "name" : "is_over15_time_detach_minus_attach" , "type" : "boolean" }, { "name" : "detail_procedures_cnt" , "type" : { "type" : "map" , "values" : "long" }} ] } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import avro.schema from avro.datafile import DataFileReader, DataFileWriter from avro.io import DatumReader, DatumWriter schema = avro.schema.Parse( open ( 'chr_ue_stat.avsc' , "r" ).read()) writer = DataFileWriter( open ( "chr_ue_stat.avro" , "wb" ), DatumWriter(), schema) writer.append({ "imsi" : "UE001" , "time_at" : "2018-04-09 12:15" , "is_over15_time_detach_minus_attach" : True , "procedures_total_cnt" : 789 , "detail_procedures_cnt" : { "A" : 123 , "B" : 342 }}) writer.append({ "imsi" : "UE002" , "time_at" : "2018-04-09 12:15" , "is_over15_time_detach_minus_attach" : False , "procedures_total_cnt" : 876 , "detail_procedures_cnt" : { "C" : 1123 , "D" : 313 }}) writer.close() reader = DataFileReader( open ( "ue_procedures.avro" , "rb" ), DatumReader()) for ue in reader: print (ue) reader.close() |
输出:
{'imsi': 'UE001', 'time_at': '2018-04-09 12:15', 'procedures': [{'timestamp': '2019-04-09 12:01', 'procedure_tag': 'A'}, {'timestamp': '2019-04-09 12:02', 'procedure_tag': 'B'}]}
{'imsi': 'UE002', 'time_at': '2018-04-09 12:15', 'procedures': [{'timestamp': '2019-04-09 12:01', 'procedure_tag': 'A'}, {'timestamp': '2019-04-09 12:02', 'procedure_tag': 'B'}]}
参考:https://avro.apache.org/docs/1.8.2/gettingstartedpython.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2018-04-09 python split space