• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

Hbase lxw1234@qq.com 3年前 (2015-07-30) 18次浏览 已收录

关键字:华为 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)试用


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明华为开源 Astro(SparkSQL On HBase)试用
喜欢 (0)
[]
分享 (0)