访问hbase
pxf读取hbase源¶
外部表中定义的名字需要和hbase中列的名字相同,或者通过hbase中的映射表pxflookup来做对应
以下是使用PXF连接HBase数据源的示例
- 创建server
create extension pxf_fdw ;
create server hbase_test foreign data wrapper hbase_pxf_fdw options (host 'test-3');
create user mapping for public server hbase_test;
- 使用外部表方式访问
1) 列名字和hbase中的相同
```sql
seaboxsql=# create foreign table t_hbase("product:name" varchar, "shipping_info:zipcode" int) server hbase_test options(resource 'order_info');
CREATE FOREIGN TABLE
seaboxsql=# select * from t_hbase;
product:name | shipping_info:zipcode
----------------+-----------------------
tennis racquet | 12345
soccer ball | 56789
snorkel set | 34567
(3 rows)
```
2) 使用映射表访问hbase
```bash
seaboxsql=# create foreign table t_hbase_map(pname varchar, zip int) server hbase_test options(resource 'order_info');
CREATE FOREIGN TABLE
seaboxsql=# select * from t_hbase_map;
pname | zip
----------------+-------
tennis racquet | 12345
soccer ball | 56789
snorkel set | 34567
(3 rows)
```
- 使用COPY命令访问
seaboxsql=# create table t_hbase("product:name" varchar, "shipping_info:zipcode" int);
CREATE TABLE
seaboxsql=# copy t_hbase from 'fdw://hbase_test/order_info';
COPY 3
seaboxsql=# select * from t_hbase;
product:name | shipping_info:zipcode
----------------+-----------------------
soccer ball | 56789
snorkel set | 34567
tennis racquet | 12345
(3 rows)
seaboxsql=# create table t_hbase_map(pname varchar, zip int);
CREATE TABLE
seaboxsql=# copy t_hbase_map from 'fdw://hbase_test/order_info';
COPY 3
seaboxsql=# select * from t_hbase_map;
pname | zip
----------------+-------
tennis racquet | 12345
soccer ball | 56789
snorkel set | 34567
(3 rows)
- HBase中的数据准备
create 'order_info', 'product', 'shipping_info'
put 'order_info', '1', 'product:name', 'tennis racquet'
put 'order_info', '1', 'product:location', 'out of stock'
put 'order_info', '1', 'shipping_info:state', 'CA'
put 'order_info', '1', 'shipping_info:zipcode', '12345'
put 'order_info', '2', 'product:name', 'soccer ball'
put 'order_info', '2', 'product:location', 'on floor'
put 'order_info', '2', 'shipping_info:state', 'CO'
put 'order_info', '2', 'shipping_info:zipcode', '56789'
put 'order_info', '3', 'product:name', 'snorkel set'
put 'order_info', '3', 'product:location', 'warehouse'
put 'order_info', '3', 'shipping_info:state', 'OH'
put 'order_info', '3', 'shipping_info:zipcode', '34567'
--- 下面这个是映射表,名称必须是pxflookup
create 'pxflookup', 'mapping'
put 'pxflookup', 'order_info', 'mapping:pname', 'product:name'
put 'pxflookup', 'order_info', 'mapping:zip', 'shipping_info:zipcode'
配置文件注意事项
1. $PXF_CONF/servers/default
或者对应server name下需要包含hbase-site.xml