2016-11-21 68 views
0

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

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文档中所述。

我在这里错过了什么?

+0

所以你正在Hadoop设置的同一台机器上运行此代码?如果不尝试使用主机名一次。 – mrsrinivas

+0

是的。从同一台机器运行代码。 – user7005835

回答

0

最后我能解决这个问题。有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的/目录

提供必要的许可。

0
+0

你能解释更多吗? – mrsrinivas

+0

尝试使用saveAsSequenceFile以及saveAsObjectFile。他们都没有工作 – user7005835

+0

@ user7005835,一旦loook在这我希望你一定能找到解决方案https://github.com/databricks/learning-spark/blob/master/src/main/java/com/oreilly/learningsparkexamples/java /BasicSaveSequenceFile.java – user4342532

相关问题