更新时间:2022-09-30 GMT+08:00

创建CarbonData表

操作场景

使用CarbonData前需先创建表,才可从表中加载数据和查询数据。

使用自定义列创建表

可通过指定各列及其数据类型来创建表。启用Kerberos认证的分析集群创建CarbonData表时,如果用户需要在默认数据库“default”以外的数据库创建新表,则需要在Hive角色管理中为用户绑定的角色添加指定数据库的“Create”权限。

命令示例:

CREATE TABLE IF NOT EXISTS productdb.productSalesTable (

productNumber Int,

productName String,

storeCity String,

storeProvince String,

revenue Int)

STORED BY 'org.apache.carbondata.format'

TBLPROPERTIES (

'table_blocksize'='128',

'DICTIONARY_EXCLUDE'='productName',

'DICTIONARY_INCLUDE'='productNumber');

上述命令所创建的表的详细信息如下:

表1 表信息定义

参数

描述

productSalesTable

待创建的表的名称。该表用于加载数据进行分析。

表名由字母、数字、下划线组成。

productdb

数据库名称。该数据库将与其中的表保持逻辑连接以便于识别和管理。

数据库名称由字母、数字、下划线组成。

productNumber

productName

storeCity

storeProvince

revenue

表中的列,代表执行分析所需的业务实体。

列名(字段名)由字母、数字、下划线组成。

说明:

CarbonData暂不支持设置列是否允许为空、默认值以及主键。

table_blocksize

CarbonData表使用的数据文件的block大小,默认值为1024,取值范围为1~2048,单位为MB。

  • 如果“table_blocksize”值太小,数据加载时将生成过多的小数据文件,可能会影响HDFS的使用性能。
  • 如果“table_blocksize”值太大,数据查询时索引匹配的block数据量较大,导致读取并发度不高,从而降低查询性能。

一般情况下,建议根据数据量级别来选择大小。例如:GB级别用256,TB级别用512,PB级别用1024。

DICTIONARY_EXCLUDE

设置指定列不生成字典,适用于数值复杂度高的列。系统默认为String类型的列做字典编码,但是如果字典值过多,会导致字典转换操作增加造成性能下降。

一般情况下,列的数值复杂度高于5万,可以被认定为高复杂度,则需要排除掉字典编码,该参数为可选参数。

说明:

在非字典列中,只支持String和Timestamp数据类型。

DICTIONARY_INCLUDE

设置指定列生成字典,适用于数值复杂度低的列,可以提升字典列上的groupby性能,为可选参数。一般情况下,字典列的复杂度不应该高于5万。