spark向hbase写入数据报错:tried to access method com

Exception in thread “main” org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator

at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:229)

at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:202)

at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)

at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)

at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)

at org.apache.hadoop.hbase.client.ClientScanner.(ClientScanner.java:155)

at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:811)

at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:193)

at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:89)

at org.apache.hadoop.hbase.client.MetaScanner.allTableRegions(MetaScanner.java:324)

at org.apache.hadoop.hbase.client.HRegionLocator.getAllRegionLocations(HRegionLocator.java:88)

at org.apache.hadoop.hbase.util.RegionSizeCalculator.init(RegionSizeCalculator.java:94)

at org.apache.hadoop.hbase.util.RegionSizeCalculator.(RegionSizeCalculator.java:81)

at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getSplits(TableInputFormatBase.java:256)

at org.apache.hadoop.hbase.mapreduce.TableInputFormat.getSplits(TableInputFormat.java:237)

at org.apache.spark.rdd.NewHadoopRDD.getPartitions(NewHadoopRDD.scala:130)

at org.apache.spark.rdd.RDD$ a n o n f u n anonfun anonfunpartitions$2.apply(RDD.scala:253)

at org.apache.spark.rdd.RDD$ a n o n f u n anonfun anonfunpartitions$2.apply(RDD.scala:251)

at scala.Option.getOrElse(Option.scala:121)

at org.apache.spark.rdd.RDD.partitions(RDD.scala:251)

at org.apache.spark.SparkContext.runJob(SparkContext.scala:2126)

at org.apache.spark.rdd.RDD.count(RDD.scala:1168)

at com.xtd.hbase.SparkHBase$.main(SparkHBase.scala:34)

at com.xtd.hbase.SparkHBase.main(SparkHBase.scala)

Caused by: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator

at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:596)

at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:580)

at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:559)

at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61)

at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1185)

at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1152)

at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)

at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:153)

at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:61)

at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)

… 22 more

Process finished with exit code 1

问题解决

spark依赖包依赖中排除 com.google.guava jar包,然后手动引入一个低版本的 com.google.guava jar包

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

6)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是因为Spark无法找到HBase的配置文件。可能是因为HBase的依赖库没有正确地添加到Spark的classpath中。您需要确保在Spark的classpath中包含了HBase的依赖库,或者将HBase的依赖库添加到Spark的lib目录中。 ### 回答2: 在使用Spark读取HBase的时候,如果出现“java.lang.noclassdeffounderror: org/apache/hadoop/hbase/hbaseconfiguration”的报错,一般是由于缺少了HBase依赖包或者版本不匹配导致的。 解决方法如下: 1. 确认HBase依赖包是否存在,以及是否与Spark版本兼容。 可以通过以下两种方式解决: ① 直接将HBase的依赖包复制到Spark的lib目录中。具体操作:将HBasehbase-client-xxx.jar和hbase-common-xxx.jar复制到Spark的安装目录下的lib目录即可。 ② 修改Spark的pom.xml文件,添加HBase的依赖。具体操作:在Spark源码根目录中的pom.xml文件中添加以下代码: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>x.x.x</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-common</artifactId> <version>x.x.x</version> </dependency> 注意:x.x.x表示HBase的版本号,需要根据实际情况替换。 2. 确认HBase配置文件是否正确。 如果上述方法解决不了问题,可能是HBase的配置文件不正确导致的。请确认HBasehbase-site.xml文件中是否有以下配置项: <property> <name>hbase.client.keyvalue.maxsize</name> <value>2097152</value> </property> 如果没有,请手动添加并重启HBase服务。 3. 确认系统环境变量是否正确。 如果上述方法都没有解决问题,可以检查系统的环境变量是否正确。请确认系统的HADOOP_CLASSPATH、JAVA_HOME、HBASE_HOME和SPARK_HOME环境变量是否正确设置,以及是否包含了HBaseSpark的相关依赖。 综上所述,出现“java.lang.noclassdeffounderror: org/apache/hadoop/hbase/hbaseconfiguration”报错,在排查的过程中需要关注HBase依赖包、配置文件和系统环境等多方面的原因。需要进行彻底的排查才能找到问题的症结并解决问题。 ### 回答3: 在 Spark 中读取 HBase 时,可能会出现“ java.lang.noclassdeffounderror: org/apache/hadoop/hbase/hbaseconfiguration ”这个错误。这是因为在 Spark 中没有找到一些必需的 HBase 的类文件,导致无法成功读取 HBase 数据。 解决此问题的步骤如下: 第一步:检查 Classpath 环境变量 请确保 Classpath 环境变量中包含 HBase 和 Hadoop 的 JAR 文件的路径。因为这两个框架的配置文件都被加载到这些 JAR 文件中,如果 Spark 找不到它们,就会导致错误。 如果 Classpath 设置正确,那么需要检查 Spark 主节点的 Spark 配置中是否包含 HBase 和 Hadoop 的 JAR 文件。 这可以通过将 HBase 和 Hadoop JAR 文件置于 Spark 的 lib 目录中来实现。可以使用以下命令检查 SPARK_HOME/lib 目录中是否存在 HBase 和 Hadoop 的 JAR 文件: $ ls $SPARK_HOME/lib | grep -i hbase $ ls $SPARK_HOME/lib | grep -i hadoop 第二步:检查 HBASE_CLASSPATH 环境变量 如果在环境变量中将 HBASE_CLASSPATH 设置为包含配置文件的路径,那么 Spark 可能不会找到它们。 要更正此错误,请确保在 Shell 中运行 HBase 脚本时也加载了这些配置文件。可以通过将 HBase 目录添加到 HBASE_CLASSPATH 环境变量中来实现,例如: $ export HBASE_CLASSPATH=$HBASE_HOME/conf 第三步:操作系统权限问题 还有可能出现因操作系统权限不足而导致无法读取 HBase 数据的情况。此时,可以修改文件的权限以解决此问题。可以使用以下命令检查当前目录下的权限: $ ls -ld $PWD 如果权限不正确,可以使用以下命令更正: $ chmod 777 $PWD 总之,如果 Spark 在从 HBase 读取数据时遇到“ java.lang.noclassdeffounderror: org/apache/hadoop/hbase/hbaseconfiguration ”错误,需要按照上述步骤检查并修复问题,以确保 Spark 可以顺利地从 HBase 读取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值