python - 来自apache_beam.io import fileio给出错误:无法导入名称fileio

时间:2017-10-17 09:58:39

标签: python apache csv

我想将一个csv文件读入一个apache beam应用程序的列表中,其中列表中的每个元素都是一个元组或列表(并不重要),这样我就可以使用csv

1,2,3
4,5,6

成为

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

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

我尝试按照How to convert csv into a dictionary in apache beam dataflow中的说明操作 但是当我尝试使用

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 个答案:

答案 0 :(得分:1)

几分钟前刚遇到同样的问题。问题是fileio显然已不在apache_beam中(至少不适合我)。它似乎已被filesystem取代。

不是一个很好的解决方案,但在来自beam_utils的sources.py中,我用“filesystem”替换了所有“fileio”实例

所以

from apache_beam.io import fileio

变为

from apache_beam.io import filesystem