利用Phoenix映射Hbase表来进行操作

一、Hbase无表数据

这种情况需要由Phoenix来建映射表

建表语句示例

CREATE TABLE IF NOT EXISTS us_population (
      state CHAR(2) NOT NULL,
      city VARCHAR NOT NULL,
      population BIGINT
      CONSTRAINT my_pk PRIMARY KEY (state, city));

此处用的联合主键,当然也支持单个主键

注意:在Phoenix中创建的映射表删除时也会将Hbase中的表删除

 

在建表时,小写的表名或列名,都会自动在sqlline.py中转为大写!这样在查询时,只能使用大写进行查询!

如果必须使用小写,需要在表名等字段上添加双引号,建议不要使用小写的表名或字段!

 

二、Hbase有表数据

2.1只需要查找,不需要对数据进行操作

这时需要建立视图,因为视图删除时不会影响到原数据

建映射视图和映射表需要遵循以下几点:

  1. Phoneix的表名必须和 hbase的 库名.表名一致
  2. Phoneix的表的主键的列名一般对应rowkey列,名称可以随意,但是类型得匹配!
  3. Phoneix的表的普通的列名,必须和hbase的列族.列名一致!
  4. 表映射的结尾,必须添加column_encoded_bytes=0,不然无法从hbase中查询到数据的!

示例:

Habse表如下

 

 

 建表语句

create view if not exists "stu"(
   "id" varchar primary key,
   "info1"."name" varchar ,
   "info1"."age" varchar
   )column_encoded_bytes=0;

2.2需要对数据进行操作

此时就只能用映射表来操作

create table if not exists "stu"(
   "id" varchar primary key,
   "info1"."name" varchar ,
   "info1"."age" varchar
   )column_encoded_bytes=0;

注意点:映射带命名空间的表

带命名空间的表在进行映射时,必须参照这个博文里的方法进行配置

https://blog.csdn.net/xdsxhdyy/article/details/96461576

除了hbase的hbase-site.xml 要配置,phoenix 的bin/hbase-site.xml也要配置,否则会报错

Ensure that config phoenix.schema.isNamespaceMappingEnabled is consitent on client and server

然后再创建与hbase同名的schema

create schema "myns";

建表语句

create table  "myns"."t1"(
   "id" varchar(20) primary key,
   "info1"."name" varchar (20)  
   )column_encoded_bytes=0;
posted @ 2020-03-23 22:57  可以看看你胖次吗  阅读(1552)  评论(0编辑  收藏  举报
Live2D