开发spark程序时,需要依赖于spark的jar包,因此需要将spark的jar包的作用域(scope)设置成compile,如果设置成provided的话,会提示找不到ClassNotFoundException的错误。
但在线上服务构建时,又需要将作用域改成provided。那么build.sbt怎么写才可以呢?这里提供一个方法,可以用以下方法:
val spark_scope = System.getProperty("spark.scope", "compile") libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.6.0" % spark_scope
正常开发过程中,不需要设置 spark.scope ,那么默认采用compile
正式发布时,只需要用以下命令进行构建。
sbt -Dspark.scope=provided clean assembly