这是一份非常详细的 Apache Phoenix SQL 命令大全和详解。Phoenix 作为 HBase 上的 SQL 层,其语法大部分与标准 SQL 兼容,但也有许多针对 HBase 的特性扩展。
核心概念
在开始之前,请记住 Phoenix 的两个核心概念:
- 主键(PRIMARY KEY):必须存在。它映射到 HBase 的 Row Key,并且所有列都会自动编码到主键的列族中(除非单独指定)。主键可以是复合主键。
- 列族(COLUMN_FAMILY):HBase 的概念。在 Phoenix 中,可以在建表时或通过
ALTER命令为列指定列族,以实现更好的物理存储分组。
一、DDL(数据定义语言)
1. CREATE TABLE - 创建表
创建表是 Phoenix 中最关键的操作,因为它直接影响到 HBase 的存储结构和查询性能。
基础语法:
CREATE TABLE [IF NOT EXISTS] schema_name.table_name (
column_name data_type [PRIMARY KEY] [NULL | NOT NULL] [DEFAULT value],
column_name data_type [NULL | NOT NULL],
...
CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...)
) [TABLENAME='hbase_namespace:hbase_table',]
[COLUMN_FAMILY='family_name',]
[SALT_BUCKETS=integer],
[DISABLE_WAL=false|true],
[IMMUTABLE_ROWS=true|false],
[COMPRESSION='GZ'|'LZ4'|'NONE'|'SNAPPY'],
[TTL=integer],
[UPDATE_CACHE_FREQUENCY=integer];
关键参数详解:
TABLENAME: 指定映射到的 HBase 表名。如果省略,Phoenix 会创建一个同名的 HBase 表。SALT_BUCKETS(极重要): 加盐。通过预分区(split)来解决写热点问题。值通常是 region server 数量的倍数。强烈建议对写密集的表使用此选项。DISABLE_WAL: 是否禁用 HBase 的预写日志(Write-Ahead Log)。禁用后可提高写入速度,但存在数据丢失风险。通常用于可以容忍数据丢失的临时数据。IMMUTABLE_ROWS: 表是否不可变。如果为true,则优化写入路径,适用于只写入一次的数据(如日志)。COMPRESSION: 设置 HBase 表的压缩算法,节省存储空间。TTL: 行的存活时间(秒),超过时间的数据会自动被 HBase 清除。UPDATE_CACHE_FREQUENCY: 指导客户端何时更新元数据缓存。
示例:
-- 简单创建表,id是主键(即HBase的Row Key)
CREATE TABLE my_table (
id VARCHAR PRIMARY KEY,
name VARCHAR

最低0.47元/天 解锁文章
2290

被折叠的 条评论
为什么被折叠?



