如何配置sbt的build.sbt使得编译时将依赖包也打包进去

最近在使用spark on yarn模式提交任务,下面是我测试的案例

--提交命令

spark-submit --master yarn-cluster --class com.htlx.sage.bigdata.spark.etl.Application --driver-memory 1g --num-executors 2 --executor-memory 2g --executor-cores 2  my-spark-etl_2.11-1.0-SNAPSHOT.jar 

--运行后报的错误是


--对这个错误很是郁闷,上网查说是配置问题,可是我运行其他代码就没问题,再说我在搭建集群的时候很是研究了一番,集群不会出现错误,所以我只能去yarn的运行日志中,在yarn的日志中也没有发现什么只有上面这个错误,然后我又去运行该程序的日志中找




-- 查看stderr文件,发现是找不到com/typesafe/scalalogging/Logger


-- 最终发现原因,是因为在运行的jar中没有将依赖包打进去。

-- 解决方案,因为我用的是sbt来进行构建scala工程的,使用了sbt的插件,在打包的时候没有将依赖的插件打包。

-- ssembly插件的目的是:

    The goal is simple: Create a fat JAR of your project with all of its dependencies.

-- 即将项目依赖的大文件也打包到生成的jar中。

-- 插件的配置取决于sbt的版本 ,我的是sbt 1.1.4,所以在project/plugins.sbt添加下面内容:

    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

-- 生成jar包,进入该项目的根目录操作下面命令

    sbt assembly

    将依赖打包,然后对该项目打包

    sbt package

 --运行命令如下

    spark-submit --master yarn-cluster --class com.htlx.sage.bigdata.spark.etl.Application --driver-memory 1g --num-executors 2 --executor-memory 2g --executor-cores 2 --jars spark-etl-assembly-1.0-SNAPSHOT.jar  spark-etl_2.11-1.0-SNAPSHOT.jar


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值