【问题标题】:Avro Writer in Python 3.5Python 3.5 中的 Avro 编写器
【发布时间】:2017-07-18 07:37:24
【问题描述】:

我正在尝试基于现有架构创建 Avro,但在使用位于 here 的教程中的语法时出现错误。控制台说“字节”对象没有属性“to_json”,但它在 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)

感谢您的帮助。

【问题讨论】:

    标签: python apache python-3.x avro


    【解决方案1】:

    链接到in the question 的文档已过期。我可以通过将架构方法调用更改为 Parse 并从“open”中删除 b 来解决上述问题。

    这是更新后的代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2021-09-06
      • 2014-03-19
      相关资源
      最近更新 更多