Spark on HBase Connector:如何在Spark侧设置HBase参数

简介: 前言X-Pack Spark可以使用Spark on HBase Connector直接对接HBase数据库,读取HBase数据表数据。有时在读取HBase时需要设置HBase的一些参数调整性能,例如通过设置hbase.client.scanner.caching的大小调整读取HBase数据的性能。

前言

X-Pack Spark可以使用Spark on HBase Connector直接对接HBase数据库,读取HBase数据表数据。有时在读取HBase时需要设置HBase的一些参数调整性能,例如通过设置hbase.client.scanner.caching的大小调整读取HBase数据的性能。使用Spark作为客户端查询HBase数据库的客户端需要有传递参数的能力。本文就列举了Spark侧传递HBase参数的方法。
注意:本文的案例以X-Pack Spark和云HBase数据库作为背景。

案例描述

提前在HBase中创建一张表,表的格式如下:

表名:hbase_t0
CF: cf1
column1: cf1:col_str
column2: cf1:col_int
column3: cf1:col_float
column4: cf1:col_double
column5: cf1:boolean

然后通过Spark on HBase Connector 在Spark侧创建表映射到HBase的表。建表语句如下:

CREATE TABLE spark_hbase_t01 USING org.apache.hadoop.hbase.spark
    OPTIONS ('catalog'= 
    '{"table":{"namespace":"default", "name":"hbase_t01"},"rowkey":"key", 
    "columns":{ 
    "col_key":{"cf":"rowkey", "col":"key", "type":"string"}, 
    "col_str":{"cf":"cf1", "col":"col_str", "type":"string"},
    "col_int":{"cf":"cf1", "col":"col_int", "type":"int"},
    "col_float":{"cf":"cf1", "col":"col_float", "type":"float"},
    "col_double":{"cf":"cf1", "col":"col_double", "type":"double"},
    "col_boolean":{"cf":"cf1", "col":"col_boolean", "type":"boolean"}}}',
    'hbase.zookeeper.quorum' = '${zkAddress}'
    )

Spark创建表后可以直接通过如下SQL查询HBase表数据。

select count(*) from spark_hbase_t01

那么如何在Spark侧直接设置HBase客户端参数呢,例如设置hbase.client.scanner.caching:。下面介绍下在Spark侧如何设置HBase的参数。

1、通过建表语句中添加“hbaseConfiguration”配置项直接添加HBase配置,如下:

CREATE TABLE spark_hbase_t01 USING org.apache.hadoop.hbase.spark
    OPTIONS ('catalog'= 
    '{"table":{"namespace":"default", "name":"hbase_t01"},"rowkey":"key", 
    "columns":{ 
    "col_key":{"cf":"rowkey", "col":"key", "type":"string"}, 
    "col_str":{"cf":"cf1", "col":"col_str", "type":"string"},
    "col_int":{"cf":"cf1", "col":"col_int", "type":"int"},
    "col_float":{"cf":"cf1", "col":"col_float", "type":"float"},
    "col_double":{"cf":"cf1", "col":"col_double", "type":"double"},
    "col_boolean":{"cf":"cf1", "col":"col_boolean", "type":"boolean"}}}',
    'hbase.zookeeper.quorum' = '${zkAddress}',
    'hbaseConfiguration'='{"hbase.client.scanner.caching":"10"}'
    )

如上语句,可以通过在建表语句中添加一个配置:'hbaseConfiguration'='{"hbase.client.scanner.caching":"10"}',这里面也可以设置多个参数,例如:

'hbaseConfiguration'='{"hbase.client.scanner.caching":"10","hbase.client.scanner.max.result.size"="2097152"}'

2、通过建表语句中添加“hbaseConfigFile”配置项添加HBase配置文件hbase-site.xml,如下:

CREATE TABLE spark_hbase_t01 USING org.apache.hadoop.hbase.spark
    OPTIONS ('catalog'= 
    '{"table":{"namespace":"default", "name":"hbase_t01"},"rowkey":"key", 
    "columns":{ 
    "col_key":{"cf":"rowkey", "col":"key", "type":"string"}, 
    "col_str":{"cf":"cf1", "col":"col_str", "type":"string"},
    "col_int":{"cf":"cf1", "col":"col_int", "type":"int"},
    "col_float":{"cf":"cf1", "col":"col_float", "type":"float"},
    "col_double":{"cf":"cf1", "col":"col_double", "type":"double"},
    "col_boolean":{"cf":"cf1", "col":"col_boolean", "type":"boolean"}}}',
    'hbase.zookeeper.quorum' = '${zkAddress}',
    'hbaseConfigFile'='./hbase-site.xml'
    )

如上,hbaseConfigFile指定的路径需要是Spark程序运行的集群上的路径。可以通过如下方式把文件上传到Spark集群。在X-Pack Spark 控制台的提交命令如下:

--class com.aliyun.spark.hbase.SparkOnHBase_submit
--driver-memory 1G 
--driver-cores 1
--executor-cores 1
--executor-memory 1G
--num-executors 12
--name mingyuanyun_test
--files /test/hbase-site.xml
 /test/spark-examples-0.0.1-SNAPSHOT.jar
${zkAddress}
hbase_t01 spark_on_hbase02 ./hbase-site.xml

如上,提交Spark任务时,通过--files把hbase-site.xml提交到Spark程序运行的集群上。然后Spark on HBase Connector 会加载hbase-site.xml的配置文件。

小结

X-Pack Spark详细介绍可参考:Spark 基本介绍
X-Pack HBase 介绍可参考:云HBase X-Pack 概述

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
164 0
|
4月前
|
分布式计算 DataWorks Java
DataWorks产品使用合集之如何引用在spark jar中引用密文的空间参数
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7月前
|
分布式计算 Scala Spark
Spark参数解析之MasterArguments
Spark参数解析之MasterArguments
46 0
|
分布式计算 Spark
Spark重要参数详解
Spark重要参数详解
117 0
|
7月前
|
分布式计算 Kubernetes Java
spark on k8s native
spark on k8s native
|
7月前
|
分布式计算 分布式数据库 API
Spark与HBase的集成与数据访问
Spark与HBase的集成与数据访问
|
分布式计算 Kubernetes Serverless
Hago 的 Spark on ACK 实践
Hago 的 Spark on ACK 实践
|
资源调度 分布式计算 Hadoop
大数据平台搭建(容器环境)——Spark3.X on Yarn安装配置
大数据平台搭建(容器环境)——Spark3.X on Yarn安装配置
大数据平台搭建(容器环境)——Spark3.X on Yarn安装配置
|
分布式计算 资源调度 Hadoop
Spark on Yarn集群模式搭建及测试
Spark on Yarn集群模式搭建及测试
355 0
|
资源调度 分布式计算 大数据
大数据Spark on YARN
大数据Spark on YARN
152 0