从spark将javardd保存到hdfs

rslzwgfq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(608)

我正在尝试将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. 我正在启动hadoop文档中提到的hdfs伪分布式集群。
我错过了什么?

jq6vz3qz

jq6vz3qz1#

我终于可以解决这个问题了。有两个问题
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/目录
提供必要的许可。

omvjsjqw

omvjsjqw2#

试过了吗 saveAsSequenceFile ?
看看这个
https://spark.apache.org/docs/1.0.0/api/java/org/apache/spark/rdd/sequencefilerddfunctions.html
谢谢。

相关问题