我是Spark新手,我有一个Spark独立集群,有2名员工 -
我在第二台机器上运行一个spark shell,它从hdfs读取一个文件并对它们进行一些计算并将结果存储在hdfs中。
这就是我在spark shell中读取文件的方法 -
val file = sc.textFile("hdfs://localhost:9000/user/root/table.csv")
这就是我将结果写回文件的方式 -
finalRDD.saveAsTextFile("hdfs://localhost:9000/user/root/output_file")
当我运行代码时,它在集群中运行,并且作业成功,每个工作程序处理大约一半的输入文件。我也能看到在webUI中处理的记录。
但是当我在第二台机器上检查HDFS时,我只找到输出文件的一部分。
另一部分存储在第一台机器的hdfs中。但即使该部分实际上并不存在于正确的hdfs位置,而是存储在_temporary目录
中在机器2中 -
root@worker:~# hadoop fs -ls ./output_file
Found 2 items
-rw-r--r-- 3 root supergroup 0 2015-07-06 16:12 output_file/_SUCCESS
-rw-r--r-- 3 root supergroup 984337 2015-07-06 16:12 output_file/part-00000
在机器1 -
root@spark:~# hadoop fs -ls ./output_file/_temporary/0/task_201507061612_0003_m_000001
-rw-r--r-- 3 root supergroup 971824 2015-07-06 16:12 output_file/_temporary/0/
task_201507061612_0003_m_000001/part-00001
我有几个问题 -
非常感谢任何帮助。
答案 0 :(得分:0)
我也很新兴,但在我的理解中:
当作业失败时,可能会留下临时结果。可能你在日志中有一些错误吗?