利用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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM