微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

华为开源Astro(SparkSQL On HBase)试用

HBase lxw1234@qq.com 17764℃ 1评论

关键字:华为Astro、SparkSQL On HBase、SQL On HBase

华为最近开源的SparkSQL On HBase,又名Astro,
整合了Spark、SparkSQL、HBase,是继Phoenix后,SQL On HBase的又一利器。
至于实际用起来怎么样,先试验一把。

开源项目地址:

https://github.com/Huawei-Spark/Spark-SQL-on-HBase

下载源码,解压。

cd Spark-SQL-on-HBase-master/

使用命令 mvn -DskipTests clean install 编译。

运行需要Spark1.4.0和HBase0.98。

HBase相关配置

每台HBase节点上配置,包括客户端,编辑hbase-site.xml

<property>
<name>hbase.coprocessor.user.region.classes</name>
<value>org.apache.spark.sql.hbase.CheckDirEndPointImpl</value>
</property>

将spark-sql-on-hbase的jar包添加到hbase的环境变量:

cp spark-sql-on-hbase-1.0.0.jar $HBASE_HOME/lib

vi hbase-env.sh
export HBASE_CLASSPATH=$HBASE_HOME/lib/spark-sql-on-hbase-1.0.0.jar:$HBASE_CLASSPATH

重启HBase集群。

Spark相关配置

每台Spark节点上配置,包括客户端:

cp spark-sql-on-hbase-1.0.0.jar $SPARK_HOME/lib/

vi spark-env.sh

export SPARK_CLASSPATH=$SPARK_HOME/lib/spark-sql-on-hbase-1.0.0.jar:${SPARK_CLASSPATH}

拷贝hbase-site.xml到$SPARK_HOME/conf目录

spark-default中配置参数:

spark.sql.hbase.scanner.fetchsize 5000  ##该参数用于设置hbase中扫描器缓存
spark.master spark://nn.uniclick.cloud:7077
spark.executor.memory 2g
spark.executor.cores 8

重启Spark集群。

 

使用hbase-sql

进入Spark-SQL-on-HBase-master/bin/目录,

运行./hbase-sql进入hbase-sql命令行。

hbase-sql默认读取$SPARK_HOME/conf/spark-defaults.conf中关于Spark的配置参数。

先在HBase中建表:

create 'lxw1234',{NAME => 'f1',VERSIONS => 1},{NAME => 'f2',VERSIONS => 1}
put 'lxw1234',"row1","f1:c1","v11"
put 'lxw1234',"row1","f1:c2","v12"
put 'lxw1234',"row1","f1:c3","v13"
put 'lxw1234',"row1","f2:c1","v21"
put 'lxw1234',"row1","f2:c2","v22"
put 'lxw1234',"row1","f2:c3","v23"

在hbase-sql中使用如下语句建表:

CREATE TABLE hbasesql_lxw1234 (
k STRING,
c1 STRING,
c2 STRING,
PRIMARY KEY (k)) 
MAPPED BY (lxw1234,COLS=[c1=f1.c1, c2=f1.c2]);

PRIMARY KEY指定HBase RowKey对应哪个字段;

MAPPED BY指定HBase表名,以及其他字段和HBase列的对应;

在hbase-sql中可以使用show tables;命令查看有哪些表:

spark-hbaseql> show tables;
OK
+----------------+-----------+
|       tableName|isTemporary|
+----------------+-----------+
|hbasesql_lxw1234|      false|
|   lxw1234_hbase|      false|
+----------------+-----------+

Time taken: 3.112 seconds

hbase-sql会在HBase中创建一张元数据表,名为”metadata”,记录了在hbase-sql中创建的表及其元数据。

在hbase-sql中使用SQL查询HBase中的表:

spark-hbaseql> select * from hbasesql_lxw1234;
OK
+----+---+---+
|   k| c1| c2|
+----+---+---+
|row1|v11|v12|
+----+---+---+

Time taken: 3.178 seconds
spark-hbaseql> select * from hbasesql_lxw1234 where k = 'row1';
OK
+----+---+---+
|   k| c1| c2|
+----+---+---+
|row1|v11|v12|
+----+---+---+

Time taken: 0.785 seconds

另外还支持删除表,INSERT数据,表关联等SQL操作,具体可参考官方文档。

本文只介绍了配置和简单实用,后面文章将几种方式查询HBase表的性能做一个对比:

Hive读取HBase表

SparkSQL通过Hive读取HBase表

SparkSQL通过自定义外部数据源读取HBase表

华为SparkSQL On HBase;

 

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » 华为开源Astro(SparkSQL On HBase)试用

喜欢 (18)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 支持二级索引吗
    小白2019-06-04 17:58 回复