它们的区别在于copyFromLocal的源路径只能是一个本地的文件。
而put的源路径可能是多个文件,也可能是标准输入,也就说put可以多个文件(批量),书写方式灵活。
当hadoop fs -put - hdfs://host:port/hadoop/hadoopfile 时表示从标准输入接收数据,这个时候目标路径必须是一个文件。
copyFromLocal
使用方法:
- hadoop fs -copyFromLocal <localsrc> URI
复制代码
copyFromLocal源路径是一个本地文件,也就是使用这条命令,源路径已经确定了。这里面假如:我们本地电脑有一个/temp/file,对于hdfs也有这么个文件。下面代码为:- hadoop fs -copyFromLocal /temp/file /temp/file
复制代码
从上面可以看出,省去我们指定文件的麻烦,在hdfs中没有指定hdfs://,这是一种更省事的方法。但是面对其他我们想复制多个源路径,批量文件复制到hdfs,那么copyFromLocal就办不到了,我们需要put方法,put可以认为是一种更灵活的一种方式
---------------------------------------------------------------
put
使用方法:hadoop fs -put <localsrc> ... <dst>
从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。- hadoop fs -put localfile /user/hadoop/hadoopfile
- hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
- hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile
- hadoop fs -put - hdfs://host:port/hadoop/hadoopfile
复制代码
从标准输入中读取输入。
返回值:
成功返回0,失败返回-1。
总结:我们能够回答下面问题:
1.copyFromLocal格式是什么样子的?
2.hadoop fs -put - hdfs://host:port/hadoop/hadoopfile是什么意思?
|