zl程序教程

您现在的位置是:首页 >  Javascript

当前栏目

Phoenix表重建流程

2023-04-18 14:26:17 时间

问题需求:

hbase表,通过phoeix建表映射,创建phoenix表时,使用的主键字段为rowkey。所以查询时不能使用rowkey字段。

解决方法:

phoenix表需要重建,主键字段名称换成rowid就可以了。
但是由于在phoenix中是建立的表映射,不是视图映射,所以删除phoenix表的时候,会自动将hbase中的表删除掉。因此,需要停止写程序操作,完整步骤如下:

1. Hbase操作

(1)停止写表服务,flush缓存到磁盘中。

flush 'DB:T_TEST'

(2)在hbase中创建原表快照

snapshot 'DB:T_TEST','SNAP_T_TEST'

(3) 通过快照创建测试表

clone_snapshot 'SNAP_T_TEST','DB:T_TEST_NEW'

还有一种可以测试:
(3.1) 基于快照恢复原表(未测试)

restore_snapshot 'SNAP_T_TEST'

2. Phoenix操作

创建DB.T_TEST_NEW到hbase的映射表。
注意:建表语句最后一定要加column_encoded_bytes=0,否则会查询不到已有的数据。

create table DB.T_TEST_NEW (
"rowid" varchar primary key, 
"info"."name" varchar, 
"info"."age" varchar
)column_encoded_bytes=0;

3. 新表数据检查

select * from DB.T_TEST_NEW

以上2.(3)开始是做的测试。
也可以直接在2.(2)之后开始,直接删除旧的phoenix表。
然后再重复2.(3)之后的操作即可。

4.其他操作(仅做记录):

(1)将快照数据迁移到另一个集群的机器上:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'table_snapshot' -copy-to file:/home/hadoop/king/bakdata/ -mappers 16

(2)将快照数据迁移到另一个集群的hdfs上

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'table_snapshot' -copy-to hdfs:///hbase/bakdata/mytable_snapshot -mappers 16