spark-操作hbase 2种方式
一.spark操作hbase的方式方式1.通过hive外部表映射成hbase表,然后通过spark-sql可以查询hbase表。方式2.通过创建HadoopRdd也可以查询hbase表。二.方式区别方式1.通过spark操作hive的hbase映射表 会产生全表扫描,无法通过rowkey来过滤数据。方式2.通过创建HadoopRdd的方式可以设置Startrow 和 endRow来设置数据的范围,
一.spark操作hbase的方式
方式1.通过hive外部表映射成hbase表,然后通过spark-sql可以查询hbase表。
方式2.通过创建HadoopRdd也可以查询hbase表。
二.方式区别
方式1.通过spark操作hive的hbase映射表 会产生全表扫描,无法通过rowkey来过滤数据。
方式2.通过创建HadoopRdd的方式可以设置Startrow 和 endRow来设置数据的范围,这样可以先过滤一部分数据,不需要将所有hbase的数据读入spark再过滤。
三.实现方式
方式1
1.基于CDH部署的集群将hbase-site.xml放入sparkconf目录中( /etc/spark/conf)
2.运行spark-submit提交任务时增肌hive-hbase-handler-2.1.1-cdh6.3.0.jar依赖
使用--jars参数将依赖添加进去。
既 : spark-shell --jars /data/model-client/hive-hbase-handler-2.1.1-cdh6.3.0.jar
hive-hbase-handler-2.1.1-cdh6.3.0.jar下载地址
链接:https://pan.baidu.com/s/1V5n1Rj8nzOqLSY4aMWllBw
提取码:nlbk
t_rsd_incident_day_count_hive为hive的hbase映射表

方式2
1.基于CDH部署的集群将hbase-site.xml放入sparkconf目录中( /etc/spark/conf)
object HbaseRdd {
def main(args: Array[String]): Unit = {
//1.创建spark环境
val spark: SparkSession = SparkUtil.getSpark("hbaseRdd")
//2.创建hbase配置文件
val hbaseConf = HBaseConfiguration.create()
//设置startrow为 2021-04-12日开始
hbaseConf.set(TableInputFormat.SCAN_ROW_START,"2021-04-12")
//3.创建rdd
val hbaseRdd: RDD[(ImmutableBytesWritable, Result)] = SparkUtil.getHbaseRdd(spark,"t_rsd_incident_day_count",hbaseConf)
//4.遍历hbaserddd 然后打印
hbaseRdd.map(_._2).foreach(x=>{
val result: Result =x
val key = Bytes.toString(result.getRow)
println(key)
})
spark.close()
}
}
SparkUtil.getHbaseRdd方法
def getHbaseRdd(spark: SparkSession, tableName: String, configuration: Configuration) = {
configuration.set(TableInputFormat.INPUT_TABLE, tableName)
//创建hbaseRDD。
//读取数据并转化成rdd TableInputFormat 是 org.apache.hadoop.hbase.mapreduce 包下的
val hBaseRDD = spark.sparkContext.newAPIHadoopRDD(
//配置文件
configuration,
//要读取数据的格式
classOf[TableInputFormat],
//key的类型
classOf[ImmutableBytesWritable],
//value的类型
classOf[Result])
hBaseRDD
}
2.提交yarn任务
/usr/bin/spark-submit --master yarn --deploy-mode cluster --class security.view.model.HbaseRdd --name aa2 --driver-cores 4 --principal hbase@RSD.COM --keytab /data/share/keytabpath/hbasenew.keytab --executor-memory 5g --driver-memory 4g --num-executors 4 --executor-cores 5 /data/modelx/model/RsdModule-1.0.jar
3.查看运行结果
可以看到打印结果rowkey是从2021-04-12开头

更多推荐



所有评论(0)