我想在 apache beam 应用程序中将 csv 文件读入列表,其中列表中的每个元素都是一个元组或列表(并不重要),这样我就可以拥有 csv
1,2,3
4,5,6
成为
[(1,2,3) , (4,5,6)]
或
[ [1,2,3], [4,5,6] ]
我尝试按照如何在 apache beam 数据流中将 csv 转换为字典中的说明进行操作但是当我尝试使用
from beam_utils.sources import CsvFileSource
我得到
from beam_utils.sources import CsvFileSource
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/beam_utils/sources.py", line 9, in <module>
from apache_beam.io import fileio
ImportError: cannot import name fileio
如果我尝试直接导入
from apache_beam.io import fileio
我遇到了同样的问题,但是我可以同时使用两者
import apache_beam.io
import beam_utils
没有任何问题。任何人都很清楚问题可能是什么,或者对我如何以不同的方式做到这一点有很好的了解?
我目前有
with beam.Pipeline(options = pipeline_options) as p:
csvfile = p | ReadFromText(known_args.input)
因此,如果我能以另一种运行良好的方式将csvfile
转换为所需的格式
几分钟前刚刚遇到了同样的问题。问题是fileio
显然不再apache_beam
(至少不适合我)。它似乎已被filesystem
取代。
不是一个很好的解决方案,但是从beam_utils sources.py,我将"fileio"的所有实例替换为"文件系统"
所以
from apache_beam.io import fileio
成为
from apache_beam.io import filesystem