📅  最后修改于: 2020-12-02 06:09:19             🧑  作者: Mango
Apache Tajo支持HBase集成。这使我们能够访问Tajo中的HBase表。 HBase是建立在Hadoop文件系统之上的面向列的分布式数据库。它是Hadoop生态系统的一部分,可提供对Hadoop File System中数据的随机实时读写访问。配置HBase集成需要执行以下步骤。
将以下更改添加到“ conf / tajo-env.sh”文件。
$ vi conf/tajo-env.sh
# HBase home directory. It is opitional but is required mandatorily to use HBase.
# export HBASE_HOME = path/to/HBase
包含HBase路径后,Tajo会将HBase库文件设置为classpath。
使用以下语法创建外部表-
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [( , ... )]
USING hbase WITH ('table' = ''
, 'columns' = ':key,:, ...'
, 'hbase.zookeeper.quorum' = ''
, 'hbase.zookeeper.property.clientPort' = '')
[LOCATION 'hbase:zk://:/'] ;
要访问HBase表,必须配置表空间位置。
这里,
表-设置hbase原始表名称。如果要创建外部表,则该表必须存在于HBase上。
列-键是指HBase行键。列条目的数量必须等于Tajo表列的数量。
hbase.zookeeper.quorum-设置zookeeper仲裁地址。
hbase.zookeeper.property.clientPort-设置Zookeeper客户端端口。
询问
CREATE EXTERNAL TABLE students (rowkey text,id int,name text)
USING hbase WITH ('table' = 'students', 'columns' = ':key,info:id,content:name')
LOCATION 'hbase:zk://:/';
在此,“位置路径”字段设置了Zookeeper客户端端口ID。如果未设置端口,那么Tajo将引用hbase-site.xml文件的属性。
您可以使用“ hbase shell”命令启动HBase交互式Shell,如以下查询所示。
询问
/bin/hbase shell
结果
上面的查询将产生以下结果。
hbase(main):001:0>
要查询HBase,您应该完成以下步骤-
步骤1-将以下命令传递给HBase Shell以创建“教程”表。
询问
hbase(main):001:0> create ‘students’,{NAME => ’info’},{NAME => ’content’}
put 'students', ‘row-01', 'content:name', 'Adam'
put 'students', ‘row-01', 'info:id', '001'
put 'students', ‘row-02', 'content:name', 'Amit'
put 'students', ‘row-02', 'info:id', '002'
put 'students', ‘row-03', 'content:name', 'Bob'
put 'students', ‘row-03', 'info:id', ‘003'
步骤2-现在,在hbase shell中发出以下命令以将数据加载到表中。
main):001:0> cat ../hbase/hbase-students.txt | bin/hbase shell
步骤3-现在,返回Tajo Shell并执行以下命令以查看表的元数据-
default> \d students;
table name: default.students
table path:
store type: HBASE
number of rows: unknown
volume: 0 B
Options:
'columns' = ':key,info:id,content:name'
'table' = 'students'
schema:
rowkey TEXT
id INT4
name TEXT
步骤4-要从表中获取结果,请使用以下查询-
询问
default> select * from students
结果
上面的查询将获取以下结果-
rowkey, id, name
-------------------------------
row-01, 001, Adam
row-02, 002, Amit
row-03 003, Bob