我正在尝试将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伪分布式集群。
我错过了什么?
2条答案
按热度按时间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/目录
提供必要的许可。
omvjsjqw2#
试过了吗
saveAsSequenceFile
?看看这个
https://spark.apache.org/docs/1.0.0/api/java/org/apache/spark/rdd/sequencefilerddfunctions.html
谢谢。