apache phoenix sql 命令大全详解

这是一份非常详细的 Apache Phoenix SQL 命令大全和详解。Phoenix 作为 HBase 上的 SQL 层,其语法大部分与标准 SQL 兼容,但也有许多针对 HBase 的特性扩展。


核心概念

在开始之前,请记住 Phoenix 的两个核心概念:

  1. 主键(PRIMARY KEY)必须存在。它映射到 HBase 的 Row Key,并且所有列都会自动编码到主键的列族中(除非单独指定)。主键可以是复合主键。
  2. 列族(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clownAdam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值