2017-08-16 2 views
1

J'utilise python v3.4 sur mon serveur et j'ai souvent besoin de copier/déplacer plusieurs fichiers de mon répertoire local vers le répertoire hdfs. Tous mes fichiers sont dans des sous-répertoires, qui sont à mon tour dans MyDir. Voici la commande que j'utilisation-Comment déplacer plusieurs fichiers à la fois du serveur local vers HDFS dans python?

$ hdfs dfs -copyFromLocal MyDir/* /path/to/hdfs/

Cette commande fonctionne très bien sur le serveur, mais quand j'utilise la même commande à l'intérieur de python utilisant le sous-processus

>>> subprocess.call(['hdfs', 'dfs', '-copyFromLocal', 'MyDir/*', '/path/to/hdfs/'])

Il donne la ERROR- suivante

copyFromLocal: `MyDir/*': No such file or directory 
1 

PS- J'ai aussi essayé ['hadoop', 'fs', '-put'....] au lieu de ['hdfs', 'dfs', '-copyFromLocal'....], ça ne marche pas non plus.

Quelqu'un peut-il m'aider à ce sujet? Toute aide serait appréciée.

EDIT- J'ai besoin de déplacer des fichiers avec des sous-répertoires.

Répondre

1

ajouter shell=True:

>>> subprocess.call(['hdfs', 'dfs', '-copyFromLocal', 'MyDir/*', '/path/to/hdfs/'], shell=True) 

Lire la suite: Actual meaning of 'shell=True' in subprocess

+0

Je l'ai essayé, il est revenu 'commande Hadoop usage' alongwith' zéro status' de sortie, mais quand j'ai vérifié les fichiers dans le chemin de HDFS, ils ne sont pas là. –