Spark SQL创建内表
AnalyticDB for MySQL支持使用Spark SQL创建C-Store表(即表引擎是XUANWU的表),本文主要介绍使用Spark SQL创建C-Store表的语法、示例以及数据类型的映射关系。
背景信息
AnalyticDB for MySQL Spark SQL创建C-Store表的语法与开源社区Spark SQL的建表语法存在差异,AnalyticDB for MySQL支持特有的表属性,详情请参见参数说明。AnalyticDB for MySQL Spark SQL的建库、查询库和查询表等语法与开源社区Spark一致,详情请参见开源社区Spark SQL参考文档。
使用限制
仅支持使用Spark SQL创建表引擎为XUANWU的表。
语法
CREATE TABLE [ IF NOT EXISTS ] table_identifier
[ ( column_name column_type [ COMMENT col_comment1 ], ... ) ]
USING adb
[ COMMENT table_comment ]
[ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
参数说明
参数 | 是否必填 | 说明 | |
table_identifier | 是 | 表名。支持 表名的命名规则,请参见命名约束。 | |
column_name | 是 | 列名。 列名的命名规则,请参见命名约束。 | |
column_type | 是 | 列的数据类型。 Spark SQL支持的数据类型,请参见数据类型映射。 | |
USING adb | 是 | 指定创建AnalyticDB for MySQL类型的表。 | |
COMMENT | 是 | 表注释。 | |
TBLPROPERTIES | distributeType | 是 | 设置分布键类型。取值如下:
|
distributeColumns | 是 | 定义分布键(一级分区)。支持将多个字段作为分布键,在建表后不支持修改分布键。 | |
storagePolicy | 是 | 指定存储策略。取值如下:
说明 HOT、COLD、MIXED大小写兼容。 | |
hotPartitionCount | 是 | 指定MIXED存储策略时热分区的个数。表示按分区键的值的大小倒序排列,最大N个分区为热分区,其他分区为冷分区。 指定MIXED策略时,必须同时指定热分区的个数;其他策略禁止指定 说明 N为正整数。 | |
indexName | 否 | 设置索引名称,多个索引用英文逗号(,)分隔。示例: | |
indexType | 否 | 设置索引类型。支持如下索引类型:
示例: | |
indexColumn | 否 | 设置被索引的列。 示例: | |
indexAll | 否 | 设置是否对全部列进行索引。
| |
primaryKey | 否 | 定义主键索引。 主键中必须包含分布键和分区键,建议将分布键和分区键放在组合主键的前部。 | |
partitionType | 否 | 设置分区键类型,固定为VALUE。 | |
partitionColumn | 否 | 定义分区键(二级分区)。 | |
partitionCount | 否 | 二级分区的生命周期。 当您指定了分区键时,必须定义生命周期 例如,当分区的列类型为日期时间类型时, | |
tableEngineName | 否 | 设置存储引擎,默认值为XUANWU。 |
示例
新建非分区表
CREATE TABLE orders (
order_id BIGINT NOT NULL COMMENT '订单ID',
customer_id INT NOT NULL COMMENT '顾客ID',
order_status STRING NOT NULL COMMENT '订单状态',
total_price BIGINT NOT NULL COMMENT '订单金额',
order_date TIMESTAMP NOT NULL COMMENT '订单日期'
)
using adb
TBLPROPERTIES (
'distributeType' = 'HASH',
'distributeColumns' = 'order_status',
'storagePolicy' = 'COLD'
);
新建分区表并设置生命周期
CREATE TABLE customer (
customer_id BIGINT NOT NULL COMMENT '顾客ID',
customer_name STRING NOT NULL COMMENT '顾客姓名',
phone_num BIGINT NOT NULL COMMENT '电话',
city_name STRING NOT NULL COMMENT '所属城市',
sex INT NOT NULL COMMENT '性别',
id_number STRING NOT NULL COMMENT '身份证号码',
home_address STRING NOT NULL COMMENT '家庭住址',
office_address STRING NOT NULL COMMENT '办公地址',
age INT NOT NULL COMMENT '年龄',
login_time TIMESTAMP NOT NULL COMMENT '登录时间'
)
using adb
TBLPROPERTIES (
'distributeType' = 'HASH',
'primaryKey'= 'customer_id,phone_num,city_name',
'distributeColumns' = 'city_name',
'partitionType' = 'value',
'partitionColumn' = 'city_name',
'partitionCount' = 100,
'indexAll' = 'N',
'storagePolicy' = 'COLD'
);
数据类型映射
Spark SQL列类型 | XIHE SQL列类型 |
BOOLEAN | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
INTEGER | INTEGER |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
BINARY | BINARY |
DATE | DATE |
STRING |
|
TIMESTAMP |
|