Apache Spark:saveAsTextFile在独立模式下无法正常工作

时间:2015-02-14 19:17:51

标签: apache-spark

我编写了一个简单的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());
    }
  }

2 个答案:

答案 0 :(得分:5)

这是因为您要保存到本地路径。你在运行多台机器吗?所以,每个worker都保存到自己的/ tmp目录中。有时,您让驱动程序执行任务,以便您在本地获得部分结果。你真的不想混合分布式模式和本地文件系统。

答案 1 :(得分:0)

您可以尝试以下代码(例如)..

vm.fields = [
  {
    key: 'textField',
    type: 'input',
    templateOptions: {
      label: 'Text Label',
      type: 'text',
      value:vm.model.textField
    },
    watcher: {
      listener: function(field, newValue, oldValue, scope, stopWatching) {
        if(newValue) {
          field.templateOptions.value = newValue;
        }
      }
    }
  }];

然后你打印否。包含在文件中的行。