我编写了一个简单的Apache Spark(1.2.0)Java程序来导入文本文件,然后使用saveAsTextFile将其写入磁盘。但是输出文件夹不包含任何内容(仅_SUCCESS文件),或者有时包含不完整的数据(仅来自1/2个任务的数据)。
当我在RDD上执行rdd.count()时,它显示正确的数字,所以我知道RDD的构造正确,只是saveAsTextFile方法无法正常工作。
这是代码:
/* SimpleApp.java */
import java.util.List;
import org.apache.spark.api.java.*;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.function.Function;
public class SimpleApp {
public static void main(String[] args) {
String logFile = "/tmp/READ_ME.txt"; // Should be some file on your system
SparkConf conf = new SparkConf().setAppName("Simple Application");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> logData = sc.textFile(logFile);
logData.saveAsTextFile("/tmp/simple-output");
System.out.println("Lines -> " + logData.count());
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为您要保存到本地路径。您正在运行多台计算机吗?因此,每个工作人员都保存到自己的/ tmp目录中。有时,您需要驱动程序执行任务,因此您可以在本地获得部分结果。确实,您不想混合使用分布式模式和本地文件系统。
| 归档时间: |
|
| 查看次数: |
2299 次 |
| 最近记录: |