Hadoop将本地文件系统文件夹复制到HDFS



我需要将文件夹从本地文件系统复制到HDFS。我找不到任何将文件夹(包括其所有子文件夹)移动到HDFS的示例

$ hadoop fs -copyFromLocal /home/ubuntu/Source-Folder-To-Copy HDFS-URI

你可以试试:

hadoop fs -put /path/in/linux /hdfs/path

甚至

hadoop fs -copyFromLocal /path/in/linux /hdfs/path

默认情况下,putcopyFromLocal都会递归地将目录上传到HDFS。

简而言之

hdfs dfs -put <localsrc> <dest>

详细举例说明:

在将文件放入 HDFS 之前检查源和目标

[cloudera@quickstart ~]$ ll files/
total 132
-rwxrwxr-x 1 cloudera cloudera  5387 Nov 14 06:33 cloudera-manager
-rwxrwxr-x 1 cloudera cloudera  9964 Nov 14 06:33 cm_api.py
-rw-rw-r-- 1 cloudera cloudera   664 Nov 14 06:33 derby.log
-rw-rw-r-- 1 cloudera cloudera 53655 Nov 14 06:33 enterprise-deployment.json
-rw-rw-r-- 1 cloudera cloudera 50515 Nov 14 06:33 express-deployment.json
[cloudera@quickstart ~]$ hdfs dfs -ls
Found 1 items
drwxr-xr-x   - cloudera cloudera          0 2017-11-14 00:45 .sparkStaging

使用-put-copyFromLocal命令复制文件 HDFS

[cloudera@quickstart ~]$ hdfs dfs -put files/ files

在 HDFS 中验证结果

[cloudera@quickstart ~]$ hdfs dfs -ls
Found 2 items
drwxr-xr-x   - cloudera cloudera          0 2017-11-14 00:45 .sparkStaging
drwxr-xr-x   - cloudera cloudera          0 2017-11-14 06:34 files
[cloudera@quickstart ~]$ hdfs dfs -ls files
Found 5 items
-rw-r--r--   1 cloudera cloudera       5387 2017-11-14 06:34 files/cloudera-manager
-rw-r--r--   1 cloudera cloudera       9964 2017-11-14 06:34 files/cm_api.py
-rw-r--r--   1 cloudera cloudera        664 2017-11-14 06:34 files/derby.log
-rw-r--r--   1 cloudera cloudera      53655 2017-11-14 06:34 files/enterprise-deployment.json
-rw-r--r--   1 cloudera cloudera      50515 2017-11-14 06:34 files/express-deployment.json

如果从本地复制文件夹,则它会将文件夹及其所有子文件夹复制到HDFS。

要将文件夹从本地复制到 hdfs,您可以使用

hadoop fs -put localpath

hadoop fs -copyFromLocal localpath

hadoop fs -put localpath hdfspath

hadoop fs -copyFromLocal localpath hdfspath

注意:

如果未指定 hdfs 路径,则文件夹副本将复制到与该文件夹同名的 hdfs。

从 hdfs 复制到本地

 hadoop fs -get hdfspath localpath

您可以使用:

1.将数据从本地文件加载到HDFS

语法:$hadoop fs –copyFromLocal

例如: $hadoop fs –copyFromLocal localfile1 HDIR

2. 将数据从 HDFS 复制到本地

系统:$hadoop fs –copyToLocal <新文件名>

例如: $hadoop fs –copyToLocal hdfs/filename myunx;

要将文件夹文件从本地复制到 hdfs,可以使用以下命令

hadoop fs -put /path/localpath  /path/hdfspath

hadoop fs -copyFromLocal /path/localpath  /path/hdfspath
导航到

"/install/hadoop/datanode/bin"文件夹或路径,您可以在其中执行Hadoop命令:

要将文件放置在 HDFS 中:格式: hadoop fs -put "本地系统路径"/文件名.csv "HDFS 目标路径"

eg)./Hadoop fs -put/opt/csv/load.csv/user/load

这里的/opt/csv/load.csv 是我的本地 Linux 系统的源文件路径。

/

user/load 表示"hdfs://hacluster/user/load"中的 HDFS 集群目标路径

要将文件从 HDFS 获取到本地系统:格式 : hadoop fs -get "/HDFSsourcefilepath" "/localpath"

例如)Hadoop FS -get/user/load/a.csv/opt/csv/

执行上述命令后,HDFS 中的 a.csv 将被下载到本地 linux 系统中的/opt/csv 文件夹中。

这些上传的文件也可以通过HDFS NameNode web UI看到。

使用

以下命令 -

hadoop fs -copyFromLocal <local-nonhdfs-path> <hdfs-target-path>
hadoop fs -copyToLocal   <hdfs-input-path> <local-nonhdfs-path>

或者你也使用spark文件系统库来获取或放置hdfs文件。

希望这是有帮助的。

最新更新