联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
11.3 表可存储格式
更新时间:1/15/2025, 3:23:29 AM

ArgoDB 提供多模型支持能力,为多种结构化/半结构化等数据提供统一的管理解决方案,可以更好地处理多样化的数据类型,从而提高数据存储和查询的效率和灵活性,目前支持关系型、搜索、文本和对象数据模型。

您可以在建表时,基于业务特点,围绕数据规模、查询性能、存储需求等角度选择表的存储格式,本小节将介绍不同表格式的适用场景和相关语法。

TEXTFILE

TEXT 表是文本格式的表,是默认的表格式。在数据量大的情况下,TEXT表的统计和查询性能都比较低;TEXT表也不支持事务处理,所以通常用于将文本文件中的原始数据导入ArgoDB中。

提供两种方式将文本文件中的数据导入TEXT表中:

  • 建外部TEXT表,让该表指向HDFS上的一个目录,会将目录下文件中的数据都导入该表。星环科技推荐使用这个方式导入数据。

  • 建TEXT表(外表内表皆可)后将本地或者HDFS上的一个文件或者一个目录下的数据 LOAD 进该表。这种方式在安全模式下需要多重认证设置,极易出错,星环科技不推荐使用这个方式导入数据。

创建TEXT表

语法:

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]
复制

参数说明:

  • <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表:

  1. 当机器拥有很大的内存或者部署了SSD时。

  2. 过滤高的场景,包括单表扫描和多表MapJoin等。

  3. 聚合率高的场景,例如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 表。