2017-10-17 11 views
0

Je veux lire un fichier CSV dans une liste dans une application apache, où chaque élément de la liste est un tuple ou une liste (ne pas vraiment la matière), de sorte que j'aurais le csvpython - de apache_beam.io import fileio donne l'erreur: impossible d'importer le nom fileio

1,2,3 
4,5,6 

devenir

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

ou

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

J'ai essayé suivant les instructions de How to convert csv into a dictionary in apache beam dataflow mais lorsque je tente d'utiliser

from beam_utils.sources import CsvFileSource 

-je obtenir

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 

Si je tente d'importer directement

from apache_beam.io import fileio 

Je reçois la même question, mais je peux utiliser les deux

import apache_beam.io 
import beam_utils 

sans aucun problème. Quelqu'un a-t-il une bonne idée de ce que pourrait être le problème ou a-t-il une bonne idée de la façon dont je pourrais le faire différemment?

J'ai actuellement

with beam.Pipeline(options = pipeline_options) as p: 
     csvfile = p | ReadFromText(known_args.input) 

donc si je peux tourner csvfile au format souhaité d'une autre manière qui fonctionne bien aussi

Répondre

0

Je viens de croiser ce même problème il y a quelques minutes. Le problème est que fileio n'est apparemment plus dans apache_beam (du moins ce n'était pas pour moi). Il semble avoir été remplacé par filesystem.

Pas une excellente solution, mais dans sources.py de beam_utils j'ai remplacé toutes les instances de "fileio" avec "système de fichiers"

Alors

from apache_beam.io import fileio 

devient

from apache_beam.io import filesystem 
+0

j'ai décidé de N'utilisez pas beam_utils à la fin et juste trouvé un moyen d'entrer les données dans une liste/dict moi-même, mais je me doutais que quelque chose comme ce que vous avez décrit était le problème. Parfois, des correctifs laids sont les meilleurs :) –

+0

Salut @TrotteBoman, soin de partager votre solution avec nous? Été à la recherche de cela aussi. :) – Ventus

+0

Je suggère ces exemples https://github.com/apache/beam/tree/master/sdks/python/apache_beam/examples/complete/game @Ventus, si elles ne m'aident pas à me le dire et je verrai si je peux être utile, mais à la base tout ce que j'ai écrit est d'ici –