Spark on HBase Connector:如何在Spark側設置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 概述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章