CarbonData数据类型概述
简介
CarbonData中的数据存储在table实体中。CarbonData table与RDBMS中的表类似。RDBMS数据存储在由行和列构成的表中。CarbonData table存储的也是结构化的数据,拥有固定列和数据类型。
支持数据类型
CarbonData支持以下数据类型:
- Int
- String
- BigInt
- Smallint
- Char
- Varchar
- Boolean
- Decimal
- Double
- TimeStamp
- Date
- Array
- Struct
- Map
下表对所支持的数据类型及其各自的范围进行了详细说明。
数据类型 |
范围 |
---|---|
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主要规格
实体 |
测试值 |
测试环境 |
---|---|---|
表数 |
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”,所有其他前面的配置保留默认值。
二级索引表规格
实体 |
测试值 |
---|---|
二级索引表数量 |
10 |
二级索引表中的组合列的列数 |
5 |
二级索引表中的列名长度(单位:字符) |
120 |
二级索引表名长度(单位:字符) |
120 |
表中所有二级索引表的表名+列名的累积长度*(单位:字符) |
3800** |
- * Hive允许的上限值或可用资源的上限值。
- ** 二级索引表使用hive注册,并以json格式的值存储在HiveSERDEPROPERTIES中。由hive支持的SERDEPROPERTIES的最大字符数为4000个字符,无法更改。