一.hbase相关操作
--hbase客户端
hbase shell
--查看帮助
help
--查看命名空间
list_namespace
default
hbase
realtime_fee
--查看表
list
--查看表结构
desc 'realtime:hbase_table'
--统计表数据量
count 'realtime:hbase_table'
--查看表数据
scan 'realtime:hbase_table'
二.phoenix相关操作
--phoenix客户端
fiber-beeline phoenix
--查看帮助
!help
--查看表
!tables
--查看表结构
!describe 表名
三.phoenix与hbase的映射,只能映射hbase default空间下的表,且表名需要保持一致
hbase操作
create 'phoenix','info'
put 'phoenix','row001','info:name','phoenix'
put 'phoenix','row002','info:name','hbase'
phoenix操作
create table "phoenix"
(
"ROW" varchar primary key
,"info"."name" varchar
)
select * from "phoenix";
+---------+----------+--+
| ROW | name |
+---------+----------+--+
| row001 | phoenix |
| row002 | hbase |
+---------+----------+--+
2 rows selected (0.024 seconds)
--表名不一致,映射不到数据
create table "phoenix2"
(
"ROW" varchar primary key
,"info"."name" varchar
)
+------+-------+--+
| ROW | name |
+------+-------+--+
+------+-------+--+
四.删除Phoenix表是否会删除hbase数据?
当你通过 Apache Phoenix 删除一个表时,它会连同 HBase 中的对应表一起删除。
Phoenix 是一个构建在 HBase 之上的 SQL 查询层,它提供了一种面向 SQL 的方式去操作 HBase 中的数据。
因此,当在 Phoenix 中执行删除表操作时,不仅会删除 Phoenix 元数据中关于该表的定义,还会删除 HBase 中实际存储该表数据的 HBase 表。
所以,这将导致该表在 Phoenix 和 HBase 中均被彻底删除。
五.Phoenix中为已存在的表添加字段
ALTER TABLE table_name ADD column_name column_type;
六.Phoenix表如何修改字段名称?
在Apache Phoenix中,直接修改字段名称的功能是受限的,因为Phoenix构建在HBase之上,而HBase不直接支持修改列名。
但你可以通过以下步骤间接实现:
-- 创建新表,包含原表字段和修改后的字段名称
CREATE TABLE new_table (
[...], -- 原有的列
new_column_name DATA_TYPE, -- 修改后的列名和类型
[...]
);
-- 将旧表数据插入新表
UPSERT INTO new_table SELECT ..., old_column_name AS new_column_name, ... FROM old_table;
-- 如果需要的话,验证数据迁移是否成功
-- SELECT * FROM new_table;
-- 确保新表数据完整且正确后,可以删除旧表
DROP TABLE old_table;
-- 将新表重命名为旧表名称(可选)
ALTER TABLE new_table RENAME TO old_table;
2.如果你不想创建新表,而是直接在Phoenix层面修改列名,
那么你需要在Phoenix的系统目录表(SYSTEM.CATALOG)中直接修改元数据,
但这是一项风险操作,通常不推荐在生产环境中进行,
因为这需要对Phoenix的内部工作机制有深入理解,
并且有可能会影响Phoenix与其他依赖这些元数据服务的协同工作