descarga - Hadoop copia un directorio?
hdfs dfs (4)
¿Hay una API HDFS que pueda copiar un directorio local completo al HDFS? Encontré una API para copiar archivos pero ¿hay alguna para directorios?
En la versión de Hadoop:
Hadoop 2.4.0.2.1.1.0-390
(Y probablemente más tarde, solo he probado esta versión específica ya que es la que tengo)
Puede copiar directorios completos recursivamente sin ninguna notación especial utilizando copyFromLocal
por ejemplo ,:
hadoop fs -copyFromLocal /path/on/disk /path/on/hdfs
que funciona incluso cuando /path/on/disk
es un directorio que contiene subdirectorios y archivos.
Intenté copiar desde el directorio usando
/hadoop/core/bin/hadoop fs -copyFromLocal /home/grad04/lopez/TPCDSkew/ /export/hadoop1/lopez/Join/TPCDSkew
Me dio un error diciendo que Target es un directorio. Luego lo modifiqué para
/hadoop/core/bin/hadoop fs -copyFromLocal /home/grad04/lopez/TPCDSkew/*.* /export/hadoop1/lopez/Join/TPCDSkew
funciona .
Para el programador, también puede usar copyFromLocalFile. Aquí hay un ejemplo:
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)
Use el armazón de Hadoop FS . Específicamente:
$ hadoop fs -copyFromLocal /path/to/local hdfs:///path/to/hdfs
Si desea hacerlo mediante programación, cree dos FileSystems (uno Local y un HDFS) y use la clase FileUtil