我只想在python3中导入avro.我得到错误只是导入avro架构.
import os
import string
import sys
from avro import schema
...
# others are not matter
Run Code Online (Sandbox Code Playgroud)
我只能阅读
Traceback (most recent call last):
File "/home/ktz/IdeaProjects/HadoopExample/src/main/python/chap4/writer_pairs.py", line 5, in <module>
from avro import schema
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 896, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1139, in find_spec
File "<frozen importlib._bootstrap_external>", line 1115, in _get_spec
File "<frozen importlib._bootstrap_external>", line 1096, in _legacy_get_spec
File "<frozen importlib._bootstrap>", line 444, …Run Code Online (Sandbox Code Playgroud) 我在Python中成功安装了Apache Avro。然后,我尝试按照以下说明将Avro文件读入Python。
https://avro.apache.org/docs/1.8.1/gettingstartedpython.html
Run Code Online (Sandbox Code Playgroud)
我的目录中有一堆Avros,该目录已经在Python中设置为正确的路径。这是我的代码:
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
reader = DataFileReader(open("part-00000-of-01733.avro", "r"), DatumReader())
for user in reader:
print (user)
reader.close()
Run Code Online (Sandbox Code Playgroud)
但是,它返回此错误:
https://avro.apache.org/docs/1.8.1/gettingstartedpython.html
Run Code Online (Sandbox Code Playgroud)
我确实知道,在该指令的示例中,首先创建了一个架构。但是什么是avsc文件?在我的情况下,应如何创建它和相应的架构?理想情况下,我想将Avro文件读入Python,并将其保存为Python磁盘或数据框/列表类型中的csv格式,以进行进一步分析。我在Windows 7上使用Python 3。
编辑 我尝试了Stephane的代码,它返回了一个新的错误
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
reader = DataFileReader(open("part-00000-of-01733.avro", "r"), DatumReader())
for user in reader:
print (user)
reader.close()
Run Code Online (Sandbox Code Playgroud)
EDITED2:Stephane的代码在大多数情况下都可以使用,但有时会引发这样的AssertionError
Traceback (most recent call last):
File "I:\DJ data\read avro.py", line 42, in <module>
for user in reader: …Run Code Online (Sandbox Code Playgroud)