web-dev-qa-db-ja.com

Hadoopはディレクトリをコピーしますか?

ローカルディレクトリ全体をHDFSにコピーできるHDFS APIはありますか?ファイルをコピーするためのAPIを見つけましたが、ディレクトリ用のAPIはありますか?

24
rakeshr

Hadoop FS Shell を使用します。具体的には:

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

プログラムで実行する場合は、2つのFileSystem(1つはローカル、1つはHDFS)を作成し、 FileUtilクラス を使用します

16
Spike Gronim

を使用してディレクトリからコピーしてみました

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

Targetがディレクトリであるというエラーが表示されました。それから修正しました

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

できます 。

11
LGG

Hadoopバージョンでは:

Hadoop 2.4.0.2.1.1.0-390

(そしておそらく後で、私が持っているのでこの特定のバージョンだけをテストしました)

copyFromLocalを使用して、特別な表記なしでディレクトリ全体を再帰的にコピーできます。例:

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

/path/on/diskは、サブディレクトリとファイルを含むディレクトリです。

2
Tommy

putコマンドも使用できます。

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

プログラマには、copyFromLocalFileを使用することもできます。次に例を示します。

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)
0
Haimei