linux下spark scala运行问题记录

问题1.使用maven编译scala文件可以编译成功,但是遇到Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.rdd.RDD.coalesce(IZLscala/math/Ordering;)Lorg/apache/spark/rdd/RDD;

这个错误,看名字就可以看出这只是个spark上基础的函数,不存在引用不存在的问题,所以大概率是由于版本冲突。

搜索了一下,有的说是因为scala版本的问题,我用的是2.10.4,在编译的过程中,确实出现了warning,指明jar包依赖的版本不同,

有的是2.10.0.有的是2.10.4,但是编译成功没有问题。

2.10.x的版本都是兼容的,编译不成功的可以加上: 2.10

在maven-scala-plugin的configuration里加,如下所示

                        
                         
                org.scala-tools                                                                                                                                                                                 
                maven-scala-plugin
                
                    2.10
                
                  
                    
                        compile-and-test-compile
                        
                            compile
                            testCompile
                        
                    
                    
                        doc
                        install
                        
                            doc
                        
                    
                 
                                                                                                                                                                                         

  

我的问题并没有解决,后来让大神看了下,支出虽然是版本问题,但是是运行的spark版本与maven打包编译时使用的spark版本并不一致,修改 pom.xml中依赖的spark的版本。我用的spark中 spark的版本是spark-core_2.11-2.1.0.jar

pom.xml中修改依赖为:版本号要对应一致

        
            org.apache.spark
            spark-core_2.11
            2.1.0
            compile
        

修改完毕,运行,没有问题了。


问题2:

直接运行scala,引用出错,

scala> import org.apache.spark.{SparkConf, SparkContext}
:7: error: object apache is not a member of package org
       import org.apache.spark.{SparkConf, SparkContext}
                  ^

根据上述思路和查找资料,查到了使用ide的结果,

http://blog.csdn.net/wyx100/article/details/51857389

右键工程-open module setting-Libraries-spark-assembly-1.0.0-hadoop1.0.4.jar(添加spark的jar包-保存

顺着这个思路,我看了下机器下的spark的spark-assembly是在哪里的,然后拷到了scala的jar里面

再次运行:


scala>  import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.{SparkConf, SparkContext}

引用成功,可以开始我的scala之旅了~


你可能感兴趣的:(问题解决,spark)