📜  Hadoop – copyFromLocal 命令

📅  最后修改于: 2021-10-27 06:44:29             🧑  作者: Mango

Hadoop copyFromLocal命令用于将文件从本地文件系统复制到 HDFS(Hadoop 分布式文件系统)。 copyFromLocal命令有一个可选开关-f用于替换系统中已经存在的文件,意味着它可以用于更新该文件。 -f开关类似于先删除一个文件,然后再复制它。如果该文件已存在于文件夹中,则将其复制到同一文件夹中将自动引发错误。

将文件从本地文件系统复制到 HDFS 的语法如下:

hdfs dfs -copyFromLocal /path 1 /path 2 .... /path n /destination

copyFromLocal本地命令类似于 HDFS 中使用的 -put 命令。我们也可以使用hadoop fs作为 hdfs dfs的同义词。该命令可以采用多个参数,其中提供的所有路径都是我们想要复制文件的源路径,除了最后一个是目标,也就是复制文件的位置。确保目标应该是一个目录。

我们的目标是将文件从我们的本地文件系统复制到 HDFS。就我而言,我想复制/home/dikshant/Documents/hadoop_file目录中存在的文件名 Salaries.csv。

Hadoop - copyFromLocal 命令

执行 copyFromLocal 命令的步骤

让我们看看我的Root目录在 HDFS 中的当前视图。

步骤 1:在 HDFS 中创建一个目录,使用以下命令复制此文件。

hdfs dfs -mkdir /Hadoop_File

在 HDFS 中创建目录

显示 HDFS 的目录

步骤2:使用如下所示的copyFromLocal命令将其复制到HDFS /Hadoop_File目录。

hdfs dfs -copyFromLocal /home/dikshant/Documents/hadoop_file/Salaries.csv /Hadoop_File

在 Hadoop 中使用 copyFromLocal 命令

步骤 3:通过使用以下命令移动到其目录位置来检查文件是否复制成功。

hdfs dfs -ls /Hadoop_File

检查文件是否被复制 - 1

检查文件是否被复制 - 2

使用 -f开关覆盖或更新 HDFS 中的文件

从下图中,您可以观察到copyFromLocal命令本身并没有在同一位置复制同名文件。它说该文件已经存在。

使用 -f 开关覆盖或更新 HDFS 中的文件 - 1

要更新文件的内容或覆盖它,您应该使用-f开关,如下所示。

hdfs dfs -copyFromLocal -f /home/dikshant/Documents/hadoop_file/Salaries.csv /Hadoop_File

使用 -f 开关覆盖或更新 HDFS 中的文件 - 2

现在你可以很容易地观察到使用带有-f开关的 copyFromLocal不会产生任何错误,或者它会很容易地更新或修改你在 HDFS 中的文件。