phoenix 实践总结

创建表

 

建表之后,不建议删除后重建,因为table 只能映射 建表后的数据,也就是不能识别历史数据(关闭列优化可以直接映射历史数据)

建表字段尽可能齐全,否则不能插入数据(spark使用)

字段类型初始建议全部设为varchar, 否则会类型冲突(当然也可以慢慢解决,笔者在这 就不一一验证了)

表名大写,因为表数据量超过两百万之后,需要异步更新索引时,表名必须大写,否则更新不了(笔者修改了异步检索引源码,自己打包使用,实现了小写表名异步建索引)

 

Phoenix 4.10 版本以上默认创建表进行列映射优化,COLUMN_ENCODED_BYTES = 0可关闭表列映射优化

创建列映射优化关闭表

CREATE TABLE phoenix_test_no(

id varchar not null,  

"cf"."hbase_test_column" varchar(50),

"cf"."etl_time" varchar

CONSTRAINT pk PRIMARY KEY (id)  

)COLUMN_ENCODED_BYTES = 0;

 

创建 列映射优化表

 

create table f_fact_ad_keyword(

id varchar not null,

"cf"."sys_code" varchar,

"cf"."page_url" varchar,

"cf"."call_corp_code" varchar

CONSTRAINT pk PRIMARY KEY (id)

);

创建索引

 

CREATE LOCAL INDEX f_fact_ad_keyword_idx ON f_fact_ad_keyword ("cf"."sys_code");

 

//异步创建索引  cf 是列簇

CREATE LOCAL INDEX t_info_submit_log_idx ON t_info_submit_log ("cf"."etl_time","cf"."flow_corp_name") INCLUDE("cf"."call_corp_code") ASYNC;

 

// mapreduce 创建索引

./bin/hbase org.apache.phoenix.mapreduce.index.IndexTool --data-table t_info_submit_log --index-table T_INFO_SUBMIT_LOG_IDX --output-path hdfs:///wordcount/out

 

如果表新加字段需要在 phoenix 表中更新字段,否则更新失败

 

alter table f_fact_ad_keyword add "cf"."etl_time" varchar;

 

ALTER TABLE F_FACT_URL_ACCOUNT_STATUS dROP column "t_ad_keyword_day_id";

 

 

phoenix 表数据从一个表迁移到另外一个表

 

UPSERT INTO F_FACT_AD_KEYWORD(

ID,"cash_amount"

)

SELECT

ID, "cash_amount"

FROM "f_fact_ad_keyword" where "business_date" < '2019-02-08';

 

外表建表

 

create external table F_FACT_AD_KEYWORD (

ID string,

sys_code string

)

STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler'

TBLPROPERTIES (

"phoenix.table.name" = "F_FACT_AD_KEYWORD",

"phoenix.zookeeper.quorum" = "eagle73",

"phoenix.zookeeper.znode.parent" = "/hbase",

"phoenix.zookeeper.client.port" = "2181",

"phoenix.rowkeys" = "ID",

"phoenix.column.mapping" = "id:ID, sys_code:sys_code"

);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值