【问题标题】:Apache Spark: saveAsTextFile not working correctly in Stand Alone ModeApache Spark:saveAsTextFile 在独立模式下无法正常工作
【发布时间】:2016-11-04 06:09:29
【问题描述】:

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

【问题讨论】:

标签: apache-spark


【解决方案1】:

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

【讨论】:

  • 嗨,肖恩,感谢您的回答.. 是的,这是一个 8 节点独立集群.. 我实际上检查了每台工作机器上的本地目录,它们只有相同的文件夹输出目录名称,但仅包含一个带有一些工作文件的 _temporary 文件夹。但是,我认为不将分布式模式与本地文件系统一起使用是很有意义的。我将尝试使用 hdfs。再次感谢。
  • 您还可以使用 NFS 挂载(例如 /data),它在所有节点上都可见以读取/写入文件。可能比设置 HDFS 更简单
【解决方案2】:

你可以试试下面的代码(例如)..

JavaSparkContext sc = new JavaSparkContext("local or your network IP","Application name");
JavaRDD<String> lines = sc.textFile("Path Of Your File", No. of partitions).count();

然后你打印不。文件中包含的行数。

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 2023-04-04
    • 2022-11-28
    • 1970-01-01
    • 2016-12-01
    • 2015-09-18
    • 1970-01-01
    • 2014-04-16
    • 2012-07-13
    相关资源
    最近更新 更多