2017-02-27 80 views
1

我試圖創建一個基於現有模式的Avro,但我在使用教程位於here的語法時遇到錯誤。控制檯說'字節'對象沒有'to_json'屬性,但它在Avro庫中很深。有沒有什麼好的解決方法或方法來解決這個錯誤?在Python 3.5 Avro編寫器

完整的錯誤:

Traceback (most recent call last): 
File "build_data.py", line 15, in <module> 
al.create_avro(logs) 
File "AppLog.py", line 57, in create_avro 
writer = DataFileWriter(open("new.avro", "wb"), DatumWriter(), schema) 
File "/usr/local/lib/python3.5/dist-packages/avro_python3-1.8.1-py3.5.egg/avro/datafile.py", line 151, in __init__ 
self.SetMeta('avro.schema', str(writer_schema).encode('utf-8')) 
File "/usr/local/lib/python3.5/dist-packages/avro_python3-1.8.1-py3.5.egg/avro/schema.py", line 266, in __str__ 
return json.dumps(self.to_json()) 
File "/usr/local/lib/python3.5/dist-packages/avro_python3-1.8.1-py3.5.egg/avro/schema.py", line 808, in to_json 
to_dump['items'] = item_schema.to_json(names) 
AttributeError: 'bytes' object has no attribute 'to_json' 

代碼:

schema = avro.schema.ArraySchema(open("AppLogs.avsc", "rb").read()) 
writer = DataFileWriter(open("new.avro", "wb"), DatumWriter(), schema) 

感謝您的幫助。

回答

0

鏈接到in the question的文檔已過時。我可以通過將模式方法調用更改爲Parse並從「打開」中刪除b來解決上述問題。

下面是更新後的代碼:

schema = avro.schema.Parse(open("AppLogs.avsc", "r").read()) 
writer = DataFileWriter(open(new_avro, "wb"), DatumWriter(), schema)