关键字:华为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表的性能做一个对比:
华为SparkSQL On HBase;
如果觉得本博客对您有帮助,请 赞助作者 。