我需要从本地文件系统复制一个文件夹到 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
默认情况下,put和 copyFromLocal都会递归地将目录上传到 HDFS。
put
copyFromLocal
如果你从本地复制一个文件夹,那么它会将所有子文件夹的文件夹复制到 HDFS。
要将文件夹从本地复制到 hdfs,可以使用
hadoop fs -put localpath
或者
hadoop fs -copyFromLocal localpath
hadoop fs -put localpath hdfspath
hadoop fs -copyFromLocal localpath hdfspath
注:
如果没有指定 hdfs 路径,那么文件夹副本将以该文件夹的相同名称复制到 hdfs。
从 hdfs 复制到 local
hadoop fs -get hdfspath localpath
你可使用:
1. 将本地文件中的数据加载到 HDFS
语法: $hadoop fs-copy From Local
例如: $hadoop fs-copFromLocal localfile1 HDIR
2. 将数据从 HDFS 复制到本地
系统: $hadoop fs-copToLocal < new file name >
例如: $hadoop fs-copToLocal hdfs/filename myunx;
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
-put
-copyFromLocal
[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
导航到您的“/install/hadoop/datanode/bin”文件夹或路径,在那里您可以执行 hadoop 命令:
将文件放入 HDFS: 格式: hadoop fs-put“ Local system path”/filename.csv“ HDFS target path”
/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“/HDFSsource/filepath”“/localpath”
Hadoop fs-get/user/load/a.csv/opt/csv/
执行以上命令后,HDFS 中的 a.csv 将被下载到本地 linux 系统中的/opt/csv 文件夹。
这个上传的文件也可以通过 HDFSNamenNodewebUI 看到。
要将文件夹文件从本地复制到 hdfs,可以使用以下命令
hadoop fs -put /path/localpath /path/hdfspath
hadoop fs -copyFromLocal /path/localpath /path/hdfspath
使用以下命令-
hadoop fs -copyFromLocal <local-nonhdfs-path> <hdfs-target-path> hadoop fs -copyToLocal <hdfs-input-path> <local-nonhdfs-path>
或者也可以使用 parks FileSystem 库来获取或放置 hdfs 文件。
希望这对你有帮助。