【发布时间】:2022-12-10 08:13:16
【问题描述】:
我正在探索 avro 文件格式,目前正在努力追加数据。我似乎在每次运行时都会覆盖。我找到了一个现有的线程here,说我不应该传递一个模式来“附加”到现有文件而不覆盖。甚至我的 lint 也给出了这个线索:If the schema is not present, presume we're appending.。但是,如果我尝试将 DataFileWriter 声明为 DataFileWriter(open("users.avro", "wb"), DatumWriter(), None),则代码将无法运行。
简而言之,如何在不覆盖现有内容的情况下将值附加到现有的 avro 文件。
schema = avro.schema.parse(open("user.avsc", "rb").read()
writer = DataFileWriter(open("users.avro", "wb"), DatumWriter(), schema)
print("start appending")
writer.append({"name": "Alyssa", "favorite_number": 256})
writer.append({"name": "Ben", "favorite_number": 12, "favorite_color": "blue"})
writer.close()
print("write successful!")
# Read data from an avro file
with open('users.avro', 'rb') as f:
reader = DataFileReader(open("users.avro", "rb"), DatumReader())
users = [user for user in reader]
reader.close()
print(f'Schema {schema}')
print(f'Users:\n {users}')
【问题讨论】:
-
这可能是文件打开的方式。您当前拥有
wb,但w将始终覆盖该文件。ab有效吗? -
似乎对我不起作用。
标签: python python-3.x avro