Spark 2.3.0 Hbase Bulkinput 报 NoSuchMethodException getCurrentUserCredentials()

这个异常是在Spark大数据集群升级后原本正常运行的程序报出的,报错位置为将中间结果批量存入hbase的过程中。经反复查找依赖关系发现是 hbase-spark jar包内部调用了SparkHadoopUtil.scala 内部的 getCurrentUserName() 方法。但是此方法在 Spark-core2.3.0.jar 中被移除了,且 hbase-spark 并未发布对应的更新。这个问题虽然可以通过降级spark版本解决(经测试只更换 spark-core jar 包并不能解决此问题)但还有个相对更加简便的方法可以解决此问题。

    1.克隆spark 在github上的官方仓库

git clone https://github.com/apache/spark.git

    2.切换分支到 branch-2.3

 git checkout branch-2.3

    3.在spark/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala 文件下添加

def getCurrentUserCredentials(): Credentials = { null }

    4. 请注意这个方法需添加至该代码上方其他位置可能会引起程序报错

addCurrentUserCredentials()

  5. 使用一下命令便可进行打包

 build/mvn -DskipTests clean package

  6. 接下来将产生的jar 包放入${SPARK_HOME}/jars 或者你定义的依赖目录并提交你的应用程序这个错误便不再产生。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值