【问题标题】:Save JavaRDD to HDFS from Spark从 Spark 将 JavaRDD 保存到 HDFS
【发布时间】:2016-11-21 05:45:43
【问题描述】:

我正在尝试将我的 Spark JavaRDD 保存到 HDFS。该过程成功运行,但我没有看到保存在 HDFS 中的文件。下面是我的代码。我在本地运行它。 (直接从 IntelliJ 运行 main() 方法。)

public static void main(String[] args){

        String file = "/Path/to/file/abc.csv";

        SparkConf conf = new SparkConf().setAppName("test").setMaster("local");
        JavaSparkContext sc = new JavaSparkContext(conf);

       JavaRDD<String> lines = sc.textFile(file);


        JavaRDD<String > filteredLines = lines.filter(new Function<String, Boolean>() {
            @Override
            public Boolean call(String s) throws Exception {
                return s.contains("Hollywood");
            }
        });

        filteredLines.coalesce(1).saveAsObjectFile("hdfs://localhost:9000/input");

        sc.close();
    }

我在 Spark 2.0 和 Hadoop 2.7.2 上运行此代码。在我的 hadoop core-site.xml 中配置为 localhost:9000。我正在启动我的 HDFS 伪分布式集群,如 hadoop 文档中所述。

我在这里缺少什么?

【问题讨论】:

  • 所以您是在安装了 Hadoop 的同一台机器上运行此代码?如果不尝试使用主机名一次。
  • 是的。在同一台机器上运行代码。

标签: hadoop apache-spark


【解决方案1】:

【讨论】:

  • 你能解释更多吗?
  • 尝试使用 saveAsSequenceFile 和 saveAsObjectFile。他们都没有工作
  • @user7005835,一旦看到这个我希望你一定能找到解决方案github.com/databricks/learning-spark/blob/master/src/main/java/…
  • 感谢 css2607 的链接。就我而言,我不想使用 JavaPairRDD,而且我认为 JavaRDD 不存在 saveAsHadoopFile 方法。
【解决方案2】:

我终于可以解决这个问题了。有 2 个问题

1) 我使用的是 Hadoop-2.7.2,我的 java 版本是 jdk1.8。 JDK1.8 似乎只支持 Hadoop2.0 以后的版本。对于 Hadoop-2.7,我需要 JDK1.7。我将我的 java 版本更改为 1.7

2) Hadoop 目录缺少权限。执行中

chmod -R 755 /hadoop/目录

提供了必要的许可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 2015-03-03
    • 2018-06-22
    • 1970-01-01
    • 2016-10-12
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多