📜  Apache Tajo-与HBase集成

📅  最后修改于: 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中创建表

您可以使用“ hbase shell”命令启动HBase交互式Shell,如以下查询所示。

询问

/bin/hbase shell 

结果

上面的查询将产生以下结果。

hbase(main):001:0>

查询HBase的步骤

要查询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