开发者社区> 云hbase+spark> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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的配置文件。

小结

Spark 对接HBase 方法可以参考:park对接HBase快速入门
X-Pack Spark详细介绍可参考:Spark 基本介绍
X-Pack HBase 介绍可参考:云HBase X-Pack 概述

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Spark Summit EU 2016】沃森媒体分析系统:从单租户Hadoop到3000租户Spark的架构演进
本讲义出自Ruben Pulido和Behar Veliqi在Spark Summit EU 2016上的演讲,主要介绍了IBM公司的沃森媒体分析系统,介绍了该系统之前针对于单租户的架构,所需面对的多租户挑战和面对该挑战产生出的新系统架构,以及在沃森媒体分析系统架构演变过程中所获取的经验。
2516 0
【Spark Summit EU 2016】使用Flame Graphs提升Spark 2.0性能的研究
本讲义出自Luca Canali在Spark Summit EU 2016上的演讲,他首先对于Spark 1.6版本和Spark 2.0版本的区别进行了分析,并介绍了Spark SQL的相关内容,SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便,他还着重介绍了对于使用Flame Graphs提升Spark 2.0性能的相关研究。
1738 0
【Spark Summit East 2017】用于数据分析的基于Kerberos的安全的Spark Notebook
本讲义出自Joy Chakraborty在Spark Summit East 2017上的演讲,主要介绍了为了使用Spark构建基于Kerberos的安全的JupyterHub笔记本所提出的技术设计和开发思想。
1590 0
【Spark Summit East 2017】使用Spark和Elasticsearch构建数据集搜索引擎
本讲义出自Oscar Castaneda Villagran在Spark Summit East 2017上的演讲,主要介绍了利用内置了Elasticsearch的Spark集群使得在集群中的驱动节点上运行嵌入式Elasticsearch实例成为了可能,这就为开发更为先进的应用程序奠定了基础,其中一个应用就是数据集搜索。
3348 0
【Spark Summit East 2017】 使用Kafka Connect和Spark Streaming构建实时数据管道
本讲义出自Ewen Cheslack Postava在Spark Summit East 2017上的演讲,主要介绍了面对使用Spark Streaming构建大规模实时数据管道的挑战,Kafka项目最近推出了新的工具—— Kafka Connect,该工具将帮助简化从Kafka导入和导出数据,Ewen Cheslack Postava分享了如何使用Kafka Connect和Spark Streaming构建实时数据管道。
1829 0
【Spark Summit East 2017】pySpark时间序列分析新方向
本讲义出自David Palaitis在Spark Summit East 2017上的演讲,主要介绍了无论是物联网(loT),财务数据分析,还是时间序列分析都需要合适工具和技术,目前很明显缺少Pandas和pySpark栈的相关软件。
3094 0
【Spark Summit East 2017】从容器化Spark负载中获取的经验
本讲义出自Tom Phelan在Spark Summit East 2017上的演讲,Tom Phelan探讨了如何实现高可用性的分布式大数据应用和数据中心主机,并分享了学到的经验教训,并对于如何在一个可靠的、可伸缩的、高性能的环境将大数据应用程序容器化给出了一些提示。
1587 0
【Spark Summit East 2017】教会Spark集群弹性管理Worker
本讲义出自Erik Erlandson与Trevor McKay 在Spark Summit East 2017上的演讲,主要介绍了将Openshift Origin作为实验室,实现了Spark能够创建自己的集群并且动态管理API的平台,还分享了如何充分利用Kubernetes生态系统中的API启用应用程序进行弹性部署。
1501 0
【Spark Summit East 2017】Spark中的容错:从生产实践中获取的经验
本讲义出自Jose Soltren在Spark Summit East 2017上的演讲,主要介绍了Spark容错中的螺母和螺栓,他首先简述了Spark中的各种容错机制,然后讨论了YARN上的Spark、调度与资源分配,在演讲中还对于一些用户案例进行了探讨研究并给出了一些需要的工具,最后分享了未来Spark中容错未来的发展方向比如调度器和检查点的变化。
1810 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
云HBaseSQL及分析 ——Phoenix&Spark
立即下载
spark替代HIVE实现ETL作业
立即下载
Hive-Bucke in Apache Spark
立即下载