不啰嗦直接看代码
//初始化Hbase的基本配置
val hbaseConf = HBaseConfiguration.create()
hbaseConf.set("hbase.zookeeper.quorum", "地址")
val scan = new Scan();
scan.addFamily(Bytes.toBytes("c"))//要读取的列簇
scan.setTimeStamp(timeStamp)//指定一个要读取的版本(如果只是拿列修饰符对应最新,可以不写)
scan.withStartRow(Bytes.toBytes(startRow))//要遍历的rowkey开始值(可以精确的也可以只是前缀),如果是全表可以不写
scan.withStopRow(Bytes.toBytes(stopRow))//要遍历的rowkey结束值(可以精确的也可以只是前缀),如果是全表可以不写
hbaseConf.set(TableInputFormat.SCAN, Base64.encodeBytes(ProtobufUtil.toScan(scan).toByteArray))
hbaseConf.set(TableInputFormat.INPUT_TABLE, Hbase的表名)
/**
* 初始化spark
*/
val sparkName = ”read_Hbase“
val sparkConf = new SparkConf().setAppName(sparkName)
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.set("spark.kryoserializer.buffer.max.mb", "512")
val sc = new SparkContext(sparkConf)
/**获取hbase数据*/
val dataRDD: RDD[(ImmutableBytesWritable, Result)] =sc.newAPIHadoopRDD(hbaseConf, classOf[TableInputFormat], classOf[ImmutableBytesWritable],classOf[Result])
上面代码要读取Hbase数据、先初始化Hbase相关信息,主要的还是Scan信息,制定了要读取什么数据,当然这里只是罗列了常用的还有其他的条件可以加入。然后再是初始化Spark上下文。最后就行调用Spark获取数据。