24 votes

Hadoop copie-t-il un répertoire ?

Existe-t-il une API HDFS capable de copier un répertoire local entier dans le HDFS ? J'ai trouvé une API pour copier des fichiers, mais en existe-t-il une pour les répertoires ?

17voto

Spike Gronim Points 4608

Utiliser le Shell Hadoop FS . En particulier :

$ hadoop fs -copyFromLocal /path/to/local hdfs:///path/to/hdfs

Si vous voulez le faire par programme, créez deux systèmes de fichiers (un local et un HDFS) et utilisez la commande la classe FileUtil

11voto

Biku B. Points 510

J'ai essayé de copier à partir du répertoire en utilisant

/hadoop/core/bin/hadoop fs -copyFromLocal /home/grad04/lopez/TPCDSkew/ /export/hadoop1/lopez/Join/TPCDSkew

Une erreur s'est produite, indiquant que Target is a directory . Je l'ai alors modifié en

/hadoop/core/bin/hadoop fs -copyFromLocal /home/grad04/lopez/TPCDSkew/*.* /export/hadoop1/lopez/Join/TPCDSkew

il fonctionne .

2voto

Tommy Points 1465

Dans la version Hadoop :

Hadoop 2.4.0.2.1.1.0-390

(Et probablement plus tard ; je n'ai testé que cette version spécifique car c'est celle que j'ai)

Vous pouvez copier des répertoires entiers de manière récursive sans aucune notation spéciale en utilisant la fonction copyFromLocal par exemple, :

hadoop fs -copyFromLocal /path/on/disk /path/on/hdfs

qui fonctionne même lorsque /path/on/disk est un répertoire contenant des sous-répertoires et des fichiers.

0voto

Crt Points 2353

Vous pouvez également utiliser la fonction put commandement :

$ hadoop fs -put /local/path hdfs:/path

-2voto

Haimei Points 328

Les programmeurs peuvent également utiliser copyFromLocalFile. Voici un exemple :

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.Path

val hdfsConfig = new Configuration
val hdfsURI = "hdfs://127.0.0.1:9000/hdfsData"
val hdfs = FileSystem.get(new URI(hdfsURI), hdfsConfig)

val oriPath = new Path("#your_localpath/customer.csv")
val targetFile = new Path("hdfs://your_hdfspath/customer.csv")
hdfs.copyFromLocalFile(oriPath, targetFile)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X