Apache Tajo支持HBase集成.这使我们能够访问Tajo中的HBase表. HBase是一个构建在Hadoop文件系统之上的分布式面向列的数据库.它是Hadoop生态系统的一部分,可在Hadoop文件系统中提供对数据的随机实时读/写访问.配置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库文件设置为类路径.
使用以下语法创建外部表 :
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] <table_name> [(<column_name> <data_type>, ... )] USING hbase WITH ('table' = '<hbase_table_name>' , 'columns' = ':key,<column_family_name>:<qualifier_name>, ...' , 'hbase.zookeeper.quorum' = '<zookeeper_address>' , 'hbase.zookeeper.property.clientPort' = '<zookeeper_client_port>') [LOCATION 'hbase:zk://<hostname>:<port>/'] ;
要访问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://<hostname>:<port>/';
此处,位置路径字段设置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