在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,采用编程模式运行。