更新时间:2024-07-24 GMT+08:00

CarbonData数据类型概述

简介

CarbonData中的数据存储在table实体中。CarbonData table与RDBMS中的表类似。RDBMS数据存储在由行和列构成的表中。CarbonData table存储的也是结构化的数据,拥有固定列和数据类型。

支持数据类型

CarbonData支持以下数据类型:

  • Int
  • String
  • BigInt
  • Smallint
  • Char
  • Varchar
  • Boolean
  • Decimal
  • Double
  • TimeStamp
  • Date
  • Array
  • Struct
  • Map

下表对所支持的数据类型及其各自的范围进行了详细说明。

表1 CarbonData数据类型

数据类型

范围

Int

4字节有符号整数,从-2,147,483,648到2,147,483,647

说明:

非字典列如果是Int类型,会在内部存储为BigInt类型。

String

100000字符

说明:

如果在CREATE TABLE中使用Char或Varchar数据类型,则这两种数据类型将自动转换为String数据类型。

如果存在字符长度超过32000的列,需要在建表时,将该列加入到tblproperties的LONG_STRING_COLUMNS属性里。

BigInt

64-bit,从-9,223,372,036,854,775,808到9,223,372,036,854,775,807

SmallInt

范围-32,768到32,767

Char

范围A到Z&a到z

Varchar

范围A到Z&a到z&0到9

Boolean

范围true或者false

Decimal

默认值是(10,0) ,最大值是(38,38)

说明:

当进行带过滤条件的查询时,为了得到准确的结果,需要在数字后面加上BD。例如,select * from carbon_table where num = 1234567890123456.22BD.

Double

64-bit,从4.9E-324到1.7976931348623157E308

TimeStamp

NA,默认格式为“yyyy-MM-dd HH:mm:ss”

Date

DATE数据类型用于存储日历日期。 默认格式为“yyyy-MM-dd”。

Array<data_type>

NA

说明:

现仅支持2层复杂类型的嵌套。

Struct<col_name: data_type COMMENT col_comment, ...>

Map<primitive_type, data_type>

CarbonData主要规格

表2 CarbonData主要规格

实体

测试值

测试环境

表数

10000

3个节点,每个executor 4个CPU核,20GB。Driver内存5GB,3个Executor。

总列数:107

String:75

Int:13

BigInt:7

Timestamp:6

Double:6

表的列数

2000

3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。

原始CSV文件大小的最大值

200GB

17个cluster节点,每个executor 150GB,25个CPU核。Driver内存10 GB,17个Executor。

每个文件夹的CSV文件数

100个文件夹,每个文件夹10个文件,每个文件大小50MB。

3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。

加载文件夹数

10000

3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。

数据加载所需的内存取决于以下因素:

  • 列数
  • 列值大小
  • 并发(使用“carbon.number.of.cores.while.loading”进行配置)
  • 在内存中排序的大小(使用“carbon.sort.size”进行配置)
  • 中间缓存(使用“carbon.graph.rowset.size”进行配置)

加载包含1000万条记录和300列的8 GB CSV文件的数据,每行大小约为0.8KB的8GB CSV文件的数据,需要约为10GB的executor执行内存,也就是说,“carbon.sort.size” 配置为“100000”,所有其他前面的配置保留默认值。

二级索引表规格

表3 二级索引表规格

实体

测试值

二级索引表数量

10

二级索引表中的组合列的列数

5

二级索引表中的列名长度(单位:字符)

120

二级索引表名长度(单位:字符)

120

表中所有二级索引表的表名+列名的累积长度*(单位:字符)

3800**

  • * Hive允许的上限值或可用资源的上限值。
  • ** 二级索引表使用hive注册,并以json格式的值存储在HiveSERDEPROPERTIES中。由hive支持的SERDEPROPERTIES的最大字符数为4000个字符,无法更改。