可通过指定各列及其数据类型来创建表。启用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');
上述命令所创建的表的详细信息如下:
表2-2 表信息定义
参数 描述
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_EXCLUD
E 设置指定列不生成字典,适用于数值复杂度高的列。系统
默认为String类型的列做字典编码,但是如果字典值过多,
会导致字典转换操作增加造成性能下降。
一般情况下,列的数值复杂度高于5万,可以被认定为高复 杂度,则需要排除掉字典编码,该参数为可选参数。
说明在非字典列中,只支持String和Timestamp数据类型。
DICTIONARY_INCLUD
E 设置指定列生成字典,适用于数值复杂度低的列,可以提
升字典列上的groupby性能,为可选参数。一般情况下,
字典列的复杂度不应该高于5万。
2.4 删除 CarbonData 表
操作场景
用户根据业务使用情况,可以删除不再使用的CarbonData表。删除表后,其所有的元 数据以及表中已加载的数据都会被删除。
操作步骤
步骤1 运行如下命令删除表。
DROP TABLE [IF EXISTS] [db_name.]table_name;
“db_name”为可选参数。如果没有指定“db_name”,那么将会删除当前数据库下 名为“table_name”的表。
例如执行命令,删除数据库“productdb”下的表“productSalesTable”:
DROP TABLE productdb.productSalesTable;
步骤2 执行以下命令查询表是否被删除:
SHOW TABLES;
----结束
3 使用 CarbonData(MRS 3.x 及之后版本)
3.1 概述
MRS 3.x及后续版本参考本章节,MRS 3.x之前版本请参考使用CarbonData(MRS 3.x之前版本)。
3.1.1 CarbonData 简介
CarbonData是一种新型的Apache Hadoop本地文件格式,使用先进的列式存储、索 引、压缩和编码技术,以提高计算效率,有助于加速超过PB数量级的数据查询,可用 于更快的交互查询。同时,CarbonData也是一种将数据源与Spark集成的高性能分析 引擎。
图3-1 CarbonData 基本架构
使用CarbonData的目的是对大数据即席查询提供超快速响应。从根本上说,
CarbonData是一个OLAP引擎,采用类似于RDBMS中的表来存储数据。用户可将大量
(10TB以上)的数据导入以CarbonData格式创建的表中,CarbonData将以压缩的多 维索引列格式自动组织和存储数据。数据被加载到CarbonData后,就可以执行即席查 询,CarbonData将对数据查询提供秒级响应。
CarbonData将数据源集成到Spark生态系统,用户可使用Spark SQL执行数据查询和分 析。也可以使用Spark提供的第三方工具JDBCServer连接到Spark SQL。