在spark开发过程中,一直想在程序中进行master的开发,如下代码:

val conf = new SparkConf().setMaster("spark://hostname:7077").setAppName("Spark Pi")


但是直接进行此项操作,老是碰到org.apache.spark.serializer.JavaDeserializationStream错误,找了很多资料,有各种各样的解决办法,看过代码后也尝试过用kryo来进行序列化,倒是没有报错,但就一直没有结果。因此肯定此项思路不通。


于是终于费劲地找到原因如下: 报错的意思应该是没有将jar包提交到spark的worker上面 导致运行的worker找不到被调用的类,才会报上述错误,因此设置个JAR,果然搞定。

    val conf = new SparkConf().setMaster("spark://ubuntu-bigdata-5:7077").setAppName("Spark Pi")
     .setJars(List("/home/ndscbigdata/simpleSparkApp.jar"))


通过此次调试,才明白后续调试可以先在local模式下进行解决,之后再生成JAR,采用编程模式运行。


更多交流学习:欢迎email: sparkexpert@sina.com



Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐