2017-10-17 155 views
0

我想讀取一個csv文件到一個列表中的apache梁應用程序,其中列表中的每個元素是一個元組或列表(不要真的物質),所以我將有CSV蟒蛇 - 從apache_beam.io導入文件給出錯誤:無法導入名稱文件

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) 

,所以如果我能行之有效太

回答

0

恰好碰到了同樣的問題在幾分鐘前的另一種方式把csvfile到所需的格式。問題是fileio顯然不在apache_beam(至少它不適合我)。它似乎已被filesystem取代。

不是一個很好的解決方案,但在從beam_utils sources.py我取代的 「FILEIO」 所有實例 「文件系統」

所以

from apache_beam.io import fileio 

成爲

from apache_beam.io import filesystem 
+0

我決定最後沒有使用beam_utils,只是找到了一種將數據輸入到列表/字典中的方法,但是我懷疑你描述的是類似的問題。有時醜陋的修復是最好的:) –

+0

嗨@TrotteBoman,謹慎與我們分享您的解決方案?一直在尋找這個。 :) – Ventus

+0

我建議這些例子https://github.com/apache/beam/tree/master/sdks/python/apache_beam/examples/complete/game @Ventus,如果他們不幫助告訴我,我會看到如果我可以是有幫助的,但基本上我寫的所有內容都來自這裏 –

相關問題