我在程序中使用fs.copyfromlocalfile(local path,hdfs dest path)。每次从本地计算机复制文件之前,我都会删除hdfs上的目标路径。但从本地路径复制文件并在其上实现map reduce后,每个文件将生成两个副本,因此字数将加倍。
为了清楚起见,我有“home/user/desktop/input/”作为我的本地路径,hdfs dest path作为“/input”。
当我检查hdfs目标路径时,即应用map reduce的文件夹,这就是结果
hduser@rallapalli-Lenovo-G580:~$ hdfs dfs -ls /input
14/03/30 08:30:12 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 4 items
-rw-r--r-- 1 hduser supergroup 62 2014-03-30 08:28 /input/1.txt
-rw-r--r-- 1 hduser supergroup 62 2014-03-30 08:28 /input/1.txt~
-rw-r--r-- 1 hduser supergroup 21 2014-03-30 08:28 /input/2.txt
-rw-r--r-- 1 hduser supergroup 21 2014-03-30 08:28 /input/2.txt~
当我将输入作为单个文件home/user/desktop/input/1.txt提供时,不会产生任何问题,只会复制单个文件。但是提到目录会产生问题,但是通过命令行手动将每个文件放在hdfs dest中不会产生问题。
我不确定是否缺少文件系统的简单逻辑。但如果有人能告诉我哪里出了问题那就太好了。
我正在使用hadoop2.2.0。
我已尝试删除本地临时文件,并确保文本文件没有打开。想办法避免复制临时文件。
提前谢谢。
1条答案
按热度按时间ee7vknir1#
文件
/input/1.txt~ /input/2.txt~
是由您正在计算机中使用的文件编辑器创建的临时文件。您可以使用ctrl+h查看本地目录中所有隐藏的临时文件并将其删除。