解决spark连接hbase遇到MasterProtos$MasterService$BlockingInterface找不到的心酸过程!

所用的软件版本:

spark2.3.0

hbase1.4.6

IDEA:2019.1

用sparkstreaming处理kafka传过来的数据,然后将处理后的结果存储到hbase中,遇到如下的NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/generated/MasterProtos$MasterService$BlockingInterface的错误:

2019-04-25 10:30:44 WARN  TaskSetManager:66 - Lost task 0.0 in stage 4.0 (TID 4, 192.168.0.110, executor 0): java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/generated/MasterProtos$MasterService$BlockingInterface
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:228)
        at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218)
        at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119)
        at org.apache.hadoo
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 SparkHBase Connector 来连接 HBase 并进行数据读写操作。以下是一个示例代码: ```scala import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.{Connection, ConnectionFactory, Put} import org.apache.hadoop.hbase.spark.HBaseContext import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession val sparkConf = new SparkConf().setAppName("Spark-HBase Connector Example") val spark = SparkSession.builder().config(sparkConf).getOrCreate() val hbaseConf = HBaseConfiguration.create() hbaseConf.set("hbase.zookeeper.quorum", "localhost") hbaseConf.set("hbase.zookeeper.property.clientPort", "2181") val hbaseContext = new HBaseContext(spark.sparkContext, hbaseConf) val tableName = "test_table" val columnFamily = "cf" val rowKey = "row1" val column = "col1" val value = "value1" val rdd = spark.sparkContext.parallelize(Seq((rowKey, column, value))) val putRdd = rdd.map { case (row, col, value) => val put = new Put(row.getBytes()) put.addColumn(columnFamily.getBytes(), col.getBytes(), value.getBytes()) (new org.apache.hadoop.hbase.client.TableIdentifier(tableName), put) } hbaseContext.bulkPut(putRdd) ``` 这段代码演示了如何使用 SparkHBase Connector 将数据写入 HBase。首先,我们需要创建一个 HBaseContext 对象,然后使用 bulkPut 方法将数据写入 HBase。在这个例子中,我们将一行数据写入了名为 test_table 的表中,行键为 row1,列族为 cf,列为 col1,值为 value1。 注意:在实际使用中,需要根据实际情况修改 HBase 的配置和表名、列族、列等信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值