提问者:小点点

python-从apache_beam.ioimport fileio给出错误:无法导入名称fileio


我想将csv文件读取到apache光束应用程序中的列表中,其中列表中的每个元素都是元组或列表(并不重要),这样我就可以拥有csv

1,2,3
4,5,6

成为

[(1,2,3) , (4,5,6)] 

[ [1,2,3], [4,5,6] ]

我尝试按照如何在apache光束数据流中将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转换为所需的格式,以另一种效果也很好的方式


共1个答案

匿名用户

几分钟前刚刚遇到同样的问题。问题是fileio显然不再在apache_beam中(至少对我来说不是)。它似乎已经被文件系统所取代。

不是一个很好的解决方案,但是在sources.pybeam_utils我用“文件系统”替换了“fileio”的所有实例

所以呢

from apache_beam.io import fileio

变得

from apache_beam.io import filesystem