CREATE [TEMPORARY] --[1] [EXTERNAL] TABLE <table_name> --[2] (<column_name> <data_type>, <column_name> <data_type>, ...) [PARTITIONED BY ...]--[3] [CLUSTERED BY ...]--[4] [ROW FORMAT ...] --[5] [STORED AS TEXTFILE] --[6] [LOCATION '<hdfs_path>'] --[7] [TBLPROPERTIES ('<property_name>'='<property_value>', ...)]; --[8]
复制
ArgoDB 提供多模型支持能力,为多种结构化/半结构化等数据提供统一的管理解决方案,可以更好地处理多样化的数据类型,从而提高数据存储和查询的效率和灵活性,目前支持关系型、搜索、文本和对象数据模型。
您可以在建表时,基于业务特点,围绕数据规模、查询性能、存储需求等角度选择表的存储格式,本小节将介绍不同表格式的适用场景和相关语法。
TEXTFILE
TEXT 表是文本格式的表,是默认的表格式。在数据量大的情况下,TEXT表的统计和查询性能都比较低;TEXT表也不支持事务处理,所以通常用于将文本文件中的原始数据导入ArgoDB中。
提供两种方式将文本文件中的数据导入TEXT表中:
-
建外部TEXT表,让该表指向HDFS上的一个目录,会将目录下文件中的数据都导入该表。星环科技推荐使用这个方式导入数据。
-
建TEXT表(外表内表皆可)后将本地或者HDFS上的一个文件或者一个目录下的数据 LOAD 进该表。这种方式在安全模式下需要多重认证设置,极易出错,星环科技不推荐使用这个方式导入数据。
创建TEXT表
语法:
参数说明:
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<property_name>:表属性名称。
-
<property_value>:表属性值。
-
<hdfs_path>:表的存储路径,可以是相对路径也可以是绝对路径。
-
可选项[1],添加 TEMPORARY 关键字创建临时表。
-
可选项[2],添加 EXTERNAL 关键字创建外表。
-
可选项[3],使用 PARTITIONED BY 创建分区表,具体请参考创建分区表。
-
可选项[4],使用 CLUSTERED BY 创建分桶表,具体请参考创建分桶表。
-
可选项[5],支持设定表的行格式。
-
可选项[6],支持使用不同的表存储格式,不指定则默认为 TEXTFILE 格式。
-
可选项[7],这里用于手动指定表在 HDFS 中的路径。
-
可选项[8],支持使用 TBLPROPERTIES 设定表的属性。
ORC/ORC_TRANSACTION
ORC 非事务表的建表只需在建表语句中用 STORED AS ORC 指定存储格式为 ORC 即可。
ORC 事务表的建表则需要几个额外的重点步骤:
-
为表分桶:为了保证增删改过程中的性能,我们要求 ORC 事务表必须是部分排序或者全局排序的,但是全局排序又过于耗费计算资源,因此我们要求 ORC 表必须是分桶表。
-
如果表的数据量特别大,建议在分桶的基础上再分区,ORC 事务表支持单值分区和范围分区。
创建 ORC 事务表
-
非分区分桶表
CREATE TABLE <table_name> (<column_name> <data_type>, <column_name> <data_type>, ...) CLUSTERED BY (<bucket_key>) INTO <num_buckets> BUCKETS STORED AS ORC_TRANSACTION;
复制 -
单值分区分桶表
CREATE TABLE <table_name> (<column_name> <data_type>, <column_name> <data_type>, ...) PARTITIONED BY (<partition_key> <data_type>) CLUSTERED BY (<bucket_key>) INTO <num_buckets> BUCKETS STORED AS ORC_TRANSACTION;
复制 -
范围分区分桶表
CREATE TABLE <table_name> (<column_name> <data_type>, <column_name> <data_type>, ...) PARTITIONED BY RANGE(<partition_key1> <data_type>, <partition_key2> <data_type>, ...) ( PARTITION [<partition_name_1>] VALUES LESS THAN(<key1_bound_value1>, <key2_bound_value1>, ...), --[1] PARTITION [partition_name_2] VALUES LESS THAN(key1_bound_value2, key2_bound_value2, ...), ... ) CLUSTERED BY (<bucket_key>) INTO <num_buckets> BUCKETS STORED AS ORC_TRANSACTION;
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<num_buckets>:分桶数。
-
<bucket_key>:分桶列。
-
<partition_key>:分区键。
-
<partition_name>:范围分区中的指定某个分区名称。
-
<key1_bound_value>:范围分区中一个分区的上限值。
-
MAXVALUE:当最后一个分区的值是 MAXVALUE 时,它将不能再增加分区。
-
可选项[1],选择是否对范围分区设置名称。
CSVFILE
CSV 表的数据来源是 CSV 文件。CSV 文件是纯文本文件,文件中包含数据以及分隔符。和 TEXT 表相似,CSV 表最常见的使用场景是用于建外表,将 CSV 文件中的数据导入 ArgoDB,星环科技不建议在任何计算场景中使用 CSV 表。计算时,应该总是将 CSV 表中的数据用 INSERT … SELECT 语句插入 ORC 或者 Holodesk 表。
创建 CSV 外表
语法:
CREATE EXTERNAL TABLE <table_name> (<column_name> <data_type>, <column_name> <data_type>, ...) STORED AS CSVFILE [LOCATION '<hdfs_path>']-- [1] [TBLPROPERTIES ( --[2] ['field.delim'='<field_delimiter>',] --[3] ['line.delim'='<newline_char>',] --[4] ['serialization.null.format'='<null_pre>',] --[5] ['quote.delim'='<quote_delimiter>',] -- [6] ['<property_name>'='<property_value>',]...)]; --[7]
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<hdfs_path>:表的存储路径,可以是相对路径也可以是绝对路径。
-
<field_delimiter>:字段分隔符,默认值为 “,”。由 <field_delimiter> 分隔的字段会被解析为不同列中的字段。
-
<newline_char>:行分隔符,默认为 “\n”。
-
<null_pre>:NULL 值字符,默认为空字段。只支持单个字符,即一个 CHAR。
-
<quote_delimiter>:指定用什么字符作为单个字段的分隔符,默认值为“"”。
-
<property_name>:表属性名称。
-
<property_value>:表属性值。
-
可选项[1],这里用于手动指定表在 HDFS 中的路径。
-
可选项[2],支持使用 TBLPROPERTIES 设定表的属性。
-
可选项[3],支持使用 field.delim 指定字段(列)分隔符。
-
可选项[4],支持使用 line.delim 指定行分隔符。
-
可选项[5],支持使用 serialization.null.format 定义 NULL 值字段的存储字符,默认为空字段。
-
可选项[6],支持使用 quote.delim 指定每列内部单个字段的分隔符。
-
可选项[7],持上述 可选项 [3] - [6] 之外,还支持设定表的其他属性信息。
下述建表语句定义了一个外部表 orders,设置了以下表属性:
-
字段使用逗号(,)作为分隔符。
-
引号(")内的内容视为完整字段。
-
每行表示一条记录,行与行之间以换行符(\n)分隔。
CREATE EXTERNAL TABLE orders ( order_id STRING, customer_name STRING, order_amount STRING ) STORED AS CSVFILE LOCATION '/user/data/orders' TBLPROPERTIES( 'field.delim'=',', 'quote.delim'='"', 'line.delim'='\n');
复制
EXCEL/JSON
EXCEL 文件就是 excel 软件生成的文件,也叫工作簿,其后缀名一般都是 XLS(2003 版以后的是 XLSX)。 JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
创建 EXCEL/JSON 表
CREATE EXTERNAL TABLE <table_name> (<column_name> <data_type>, <column_name> <data_type>, ...) STORED AS EXCEL/JSON;
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
注意
-
支持读取多 sheet 的数据,但是写入到文件中,只会写入到一个 sheet 中,sheet 名字叫做 “sheet1”。
-
支持读 xls/xlsx 或者两者混合,但是推荐使用后者。数据源文件,如果没有后缀则当成xlsx。写文件只支持写xlsx。
-
支持所有 primitive 类型
-
不支持 Excel 存储的文件 split。
-
不支持 json/excel 存储下的复杂类型。
-
json 用的是默认的 inputformat,意味着 json 存储的数据文件,依然是按照默认换行符来换行,样例数据格式:
{"name":"inceptor","id":"1"}
{"name":"argodb","id":"2"}
FWCFILE
FWCFILE 是定宽文本文件,有一些业务场景中,客户提供的数据文件为定宽文本文件,即每个字段的字节宽度是固定的,字段和字段之间没有显示的分隔符,每条数据之间有行分隔符。
创建FWC外表
语法:
CREATE EXTERNAL TABLE <table_name>(<column_name> <data_type>, <column_name> <data_type>, ...) [STORED AS FWCFILE] -- [1] [LOCATION "<hdfs_path>"] --[2] TBLPROPERTIES( 'fields.width'='<fields_width>' [,'padding.type'='LEFT|RIGHT', 'padding.char'='<pad_char>',] -- [4] ['serialization.encoding'='<code_type>',]--[5] ['serialization.null.format'='<null_pre>')] --[6] ['<property_name>'='<property_value>',]...)]; --[7]
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<hdfs_path>:表的存储路径,可以是相对路径也可以是绝对路径。
-
<fields_wildth>:每个字段支持存入的字符数量。
-
<pad_char>:padding 填充字符。
-
<code_type>:编码格式,如 UTF-8。
-
<null_pre>:NULL 值字符,默认为空字段。只支持单个字符,即一个 CHAR。
-
<property_name>:表属性名称。
-
<property_value>:表属性值。
-
可选项[1],设定表存储格式,此处为 FWCFILE,不指定则默认为 TEXTFILE 格式。
-
可选项[2],这里用于手动指定表在 HDFS 中的路径。
-
可选项[3],支持使用 fields_width 指定字段(列)可存入的最大字符数量。
-
可选项[4],定义 padding 类型为左侧(LEFT)或右侧(RIGHT)插入填充字符,以及定义填充字符。
-
可选项[5],支持定义文件的编码格式。
-
可选项[6],支持使用 serialization.null.format 指定 NULL 值字段的存储字符。
-
可选项[7],持上述 可选项 [3] - [6] 之外,还支持设定表的其他属性信息。
实例
DROP DATABASE IF EXISTS FWC; CREATE DATABASE FWC; USE FWC; DROP TABLE IF EXISTS TEST; CREATE EXTERNAL TABLE TEST(col1 STRING, col2 STRING, col3 STRING, col4 STRING, col5 STRING, col6 STRING) STORED AS FWCFILE --[1] LOCATION "/home/yibin/temp/fwc/data" TBLPROPERTIES('fields.width'='20,100,2,40,14,3', --[2] 'padding.type'='right','padding.char'=' ', --[3] 'serialization.encoding'='gb18030', 'serialization.null.format'='\N'); --[4]
复制
-
[1]:文件类型为 FWCFILE
-
[2]:字段的字节数分别为: 20,100,2,40,14,3
-
[3]:padding 类型为右侧插入填充字符,填充字符为空格
-
[4]:NULL 的表示方式为 \N
SEQUENCEFILE
SequeceFile是Hadoop API提供的一种二进制文件支持。这种二进制文件直接将<key, value>对序列化到文件中。一般对小文件可以使用这种文件合并,即将文件名作为key,文件内容作为value序列化到大文件中。
这种文件格式有以下好处:
1.支持压缩,且可指定为基于Record或Block压缩(Block级压缩性能较优)
2.本地化任务支持:因为文件可以被切分,因此MapReduce任务时数据的本地化情况是非常好的。
3.难度低:因为是Hadoop框架提供的API,业务逻辑侧的修改比较简单。
坏处: 需要一个合并文件的过程,且合并后的文件将不方便查看。
创建SEQUENCEFILE表
语法:
CREATE [EXTERNAL] TABLE --[1] [IF NOT EXISTS] <table_name> --[2] [(<column_name> <data_type> --[3] [COMMENT '<column_comment>'], ...)] --[4] [COMMENT '<table_comment>'] --[5] [PARTITIONED BY (<partition_key> <data_type> --[6] [COMMENT '<column_comment>'], ...)] --[7] [CLUSTERED BY (<bucket_column1>, <bucket_column2>, ...) --[8] [SORTED BY (<column_name> [ASC|DESC], ...)]--[9] INTO <num_buckets> BUCKETS] [ROW FORMAT <row_format>] --[10] [STORED AS SEQUENCEFILE] --[11] [LOCATION <hdfs_path>] --[12]
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<column_comment>:列注释。
-
<table_comment>:表注释。
-
<partition_key>:分区键。
-
<num_buckets>:分桶数。
-
<bucket_column>:分桶列。
-
<row_format>:表的行格式。
-
<hdfs_path>:表的存储路径,可以是相对路径也可以是绝对路径。
-
可选项[1],添加 EXTERNAL 关键字创建外表。
-
可选项[2],如果 <table_name> 指定的表已经存在,会报错,加上 IF NOT EXISTS 选项在建表前检测是否已存在同名表。
-
可选项[3],支持对表定义列。
-
可选项[4],用 [COMMENT] 为列加注释,注意注释要放在引号中。
-
可选项[5],用 [COMMENT] 为表加注释,注意注释要放在引号中。
-
可选项[6],使用 PARTITIONED BY 创建分区表,具体请参考创建分区表。
-
可选项[7],用 [COMMENT] 为分区加注释,注意注释要放在引号中。
-
可选项[8],使用 CLUSTERED BY 创建分桶表,具体请参考创建分桶表。
-
可选项[9],支持使用 SORTED BY 对分桶中的数据排序,DESC 表示降序,ASC 表示升序(默认)。
-
可选项[10],支持设定表的行格式。
-
可选项[11],支持使用不同的表存储格式。这里为 SEQUENCEFILE,若不指定则默认为 TEXTFILE 格式。
-
可选项[12],这里用于手动指定表在 HDFS 中的路径。
-
RCFILE
结合列存储和行存储的优缺点,Facebook提出了基于行列混合存储的RCFile,它是基于SEQUENCEFILE实现的列存储格式,它即满足快速数据加载和动态负载高适应的需求外,也解决了SEQUENCEFILE的一些瓶颈。该存储结构遵循的是“先水平划分,再垂直划分”的设计理念。先将数据按行水平划分为行组,这样一行的数据就可以保证存储在同一个集群节点;然后在对行进行垂直划分。
创建RCFILE表
语法:
CREATE [EXTERNAL] TABLE --[1] [IF NOT EXISTS] <table_name> --[2] [(<column_name> <data_type> --[3] [COMMENT '<column_comment>'], ...)] --[4] [COMMENT '<table_comment>'] --[5] [PARTITIONED BY (<partition_key> <data_type> --[6] [COMMENT '<column_comment>'], ...)] --[7] [CLUSTERED BY (<bucket_column>, <bucket_column>, ...) --[8] [SORTED BY (<column_name> [ASC|DESC], ...)] --[9] INTO <num_buckets> BUCKETS] [ROW FORMAT <row_format>] --[10] [STORED AS RCFILE] --[11] [LOCATION <hdfs_path>] --[12]
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<column_comment>:列注释。
-
<table_comment>:表注释。
-
<partition_key>:分区键。
-
<num_buckets>:分桶数。
-
<bucket_column>:分桶列。
-
<row_format>:表的行格式。
-
<hdfs_path>:表的存储路径,可以是相对路径也可以是绝对路径。
-
可选项[1],添加 EXTERNAL 关键字创建外表。
-
可选项[2],如果 <table_name> 指定的表已经存在,会报错,加上 IF NOT EXISTS 选项在建表前检测是否已存在同名表。
-
可选项[3],支持对表定义列。
-
可选项[4],用 [COMMENT] 为列加注释,注意注释要放在引号中。
-
可选项[5],用 [COMMENT] 为表加注释,注意注释要放在引号中。
-
可选项[6],使用 PARTITIONED BY 创建分区表,具体请参考创建分区表。
-
可选项[7],用 [COMMENT] 为分区加注释,注意注释要放在引号中。
-
可选项[8],使用 CLUSTERED BY 创建分桶表,具体请参考创建分桶表。
-
可选项[9],支持使用 SORTED BY 对分桶中的数据排序,DESC 表示降序,ASC 表示升序(默认)。
-
可选项[10],支持设定表的行格式。
-
可选项[11],支持使用不同的表存储格式。这里为 RCFILE,若不指定则默认为 TEXTFILE 格式。
-
可选项[12],这里用于手动指定表在 HDFS 中的路径。
HOLODESK
Holodesk对满足以下特征的场景表现出了极强的处理能力,极力建议对这些场景创建Holodesk表:
-
当机器拥有很大的内存或者部署了SSD时。
-
过滤高的场景,包括单表扫描和多表MapJoin等。
-
聚合率高的场景,例如GROUP BY之后,信息被大量聚合。
PARQUET
Parquet 是列式存储的一种文件类型,无论数据处理框架,数据模型或编程语言的选择如何,Parquet都是Hadoop生态系统中任何项目可用的列式存储格式。Parquet与TEXT、JSON、CSV等文件格式相比,它有三个核心特征:列式存储、自带Schema、具备Predicate Filter特性。
创建PARQUET表
语法:
CREATE [EXTERNAL] TABLE --[1] [IF NOT EXISTS] <table_name> --[2] [(<column_name> <data_type> --[3] [COMMENT '<column_comment>'], ...)] --[4] [COMMENT '<table_comment>'] --[5] [PARTITIONED BY (<partition_key> <data_type> --[6] [COMMENT '<column_comment>'], ...)] --[7] [CLUSTERED BY (<bucket_column>, <bucket_column>, ...)]--[8] [STORED AS PARQUET ];--[9]
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<column_comment>:列注释。
-
<table_comment>:表注释。
-
<partition_key>:分区键。
-
<bucket_column>:分桶列。
-
可选项[1],添加 EXTERNAL 关键字创建外表。
-
可选项[2],如果 <table_name> 指定的表已经存在,会报错,加上 IF NOT EXISTS 选项在建表前检测是否已存在同名表。
-
可选项[3],支持对表定义列。
-
可选项[4],用 [COMMENT] 为列加注释,注意注释要放在引号中。
-
可选项[5],用 [COMMENT] 为表加注释,注意注释要放在引号中。
-
可选项[6],使用 PARTITIONED BY 创建分区表,具体请参考创建分区表。
-
可选项[7],用 [COMMENT] 为分区加注释,注意注释要放在引号中。
-
可选项[8],使用 CLUSTERED BY 创建分桶表,具体请参考创建分桶表。
-
可选项[9],支持使用不同的表存储格式。这里为 PARQUET,若不指定则默认为 TEXTFILE 格式。
HYPERDRIVE
若需使用此存储格式需要提前安装星环的 Hyperbase 产品,并设置 Quark 引擎依赖于 Hyperbase 服务后,通过 Beeline 连接上述 Quark 服务即可定义 Hyperdrive 表。
Transwarp Hyperbase 的典型使用场景
-
对一张表中作为唯一标识的主键进行精确查询或后模糊查询 —— Hyperbase Rowkey 查询
创建 HYPERDRIVE 表
建映射表语法
CREATE [EXTERNAL] TABLE <table_name> ( --[1] <key> <key_data_type>, <column_name1> <data_type>, <column_name2> <data_type>, ...) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler|io.transwarp.hyperdrive.HyperdriveStorageHandler' --[2] WITH SERDEPROPERTIES('hbase.columns.mapping'=':key,<column_name1>,<column_name2>,...') --[3] [TBLPROPERTIES('hbase.table.name'='<table_in_hbase>')]; --[4]
复制
参数说明
-
<table_name>:表名称。
-
<key>:key 名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<table_in_hbase>:映射表在 hbase 中的表名称。
-
可选项[1],[EXTERNAL] 为外表选项,加上 EXTERNAL 即建外表。ArgoDB 对外表没有所有权,删除表时,仅仅删除表中的元数据,不会删除原表数据。对于非外表,ArgoDB有所有权,所以在删除时会将元数据和数据都删除。
-
[2],指定表使用的Storage Handler:建HBase表,使用 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' ;建Hyperdrive表使用 'io.transwarp.hyperdrive.HyperdriveStorageHandler' 。注意选择的Storage Handler要放在引号中。
-
[3],hbase.columns.mapping 属性定义映射表和HBase表之间的列对应关系。映射表的第一列必须对应HBase表中的Row Key。映射表中剩余的列将是对应HBase表中的 <cf>:<cq>(<column_family>:<column_qualifier>) 组合。
-
可选项[4],指定映射表对应的 Transwarp HBase 表的名称。
Hyperdrive映射表的简化建表
CREATE TABLE <table_name> ( <key> <key_data_type>, <column_name1> <data_type>, <column_name2> <data_type>, ...) STORED AS HYPERDRIVE;
复制
推荐使用简化建表的方式,系统会自动为映射表和 Hyperdrive 表建立默认的对应关系,具体包括:
-
表名:映射表会自动对应同名的 Hyperdrive 表。
-
列名:映射表中的列会自动映射到 Hyperdrive 表的列族和列名。例如,映射表中的列 a 会对应 Hyperdrive 表中的 f:a(其中 f 为列族名,a 为列名)。
如果你不需要定制这些对应关系,简化建表即可满足需求。此外,如果 Hyperdrive 表已经存在,且名称与映射表不同,可以通过指定表属性:TBLPROPERTIES ('hbase.table.name'='<hbase_table>')
来指定目标 Hyperdrive 表的名称。
参数说明:
-
<table_name>:表名称。
-
<key>:key 名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
ESDRIVE
若使用此存储格式需要设置 Quark 服务依赖于 Search 服务。
Esdrive典型使用场景
-
对表中字段需要进行分词查询
-
需要对word,excel,pdf,日志文件中进行分词信息查询
-
对表中大量字段会进行模糊查询
创建ES表
-
创建一张Transwarp ES内表
CREATE TABLE es_start( key STRING, content STRING, tint INT, tfloat FLOAT, tbool BOOLEAN ) STORED AS ES;
复制 -
创建一张Transwarp ES外表
CREATE EXTERNAL TABLE es_start_ex( key STRING, content STRING, tint INT, tfloat FLOAT, tbool BOOLEAN ) STORED AS ES TBLPROPERTIES('elasticsearch.tablename'='default.es_start');
复制
SEARCH
Search 表与 ES 表使用基本相同且性能优于 ES 表。也需要设置 Quark 引擎依赖于 Hyperbase 服务后,通过 Beeline 连接上述 Quark 服务即可定义 Search 表。
创建SEARCH表
CREATE [EXTERNAL] TABLE --[1] [IF NOT EXISTS] <table_name> --[2] [(<column_name> <data_type> --[3] [COMMENT '<column_comment>'], ...)] --[4] [COMMENT '<table_comment>'] --[5] [PARTITIONED BY (<partition_key> <data_type> --[6] [COMMENT '<column_comment>'], ...)] --[7] [CLUSTERED BY (<bucket_column>, <bucket_column>, ...) --[8] [STORED AS SEARCH|STORED BY 'io.transwarp.searchdrive.SearchStorageHandler']; --[9]
复制
参数说明
-
<table_name>:表名称。
-
<column_name>:列名称。
-
<data_type>:数据类型。
-
<column_comment>:列注释。
-
<table_comment>:表注释。
-
<partition_key>:分区键。
-
<bucket_column>:分桶列。
-
可选项[1],添加 EXTERNAL 关键字创建外表。
-
可选项[2],如果 <table_name> 指定的表已经存在,会报错,加上 IF NOT EXISTS 选项在建表前检测是否已存在同名表。
-
可选项[3],支持对表定义列。
-
可选项[4],用 [COMMENT] 为列加注释,注意注释要放在引号中。
-
可选项[5],用 [COMMENT] 为表加注释,注意注释要放在引号中。
-
可选项[6],使用 PARTITIONED BY 创建分区表,具体请参考创建分区表。
-
可选项[7],用 [COMMENT] 为分区加注释,注意注释要放在引号中。
-
可选项[8],使用 CLUSTERED BY 创建分桶表,具体请参考创建分桶表。
-
可选项[9],支持两种存储方式创建 SEARCH 表。