carbondata与mysql_carbondata使用总结

本文详述了如何在Spark-shell中使用CarbonData,包括创建表、加载数据和查询数据的步骤。CarbonData是一种列式存储数据格式,支持多种数据类型。创建表时可指定列及数据类型,并通过STORED BY 'org.apache.carbondata.format'存储。数据加载涉及数据文件上传、指定分隔符和数据头。删除表时,可通过DROP TABLE命令执行。数据加载后,可使用LOAD DATA命令加载CSV数据,并通过SHOW SEGMENTS和DELETE FROM TABLE命令管理数据段。
摘要由CSDN通过智能技术生成

5. 在Spark-shell上使用CarbonData

用户若需要在Spark-shell上使用CarbonData,需通过如下方式进行创建CarbonData Table,加载数据到CarbonData Table和在CarbonData中查询数据的操作。

spark.sql("CREATE TABLE x2(imei string, deviceInformationId int, mac string, productdate timestamp, updatetime timestamp, gamePointId double, contractNumber double) STORED BY 'org.apache.carbondata.format'")

spark.sql("LOAD DATA inpath 'hdfs://hacluster/data/x1_without_header.csv' into table x2 options('DELIMITER'=',', 'QUOTECHAR'='"','FILEHEADER'='imei, deviceinformationid,mac, productdate,updatetime, gamepointid,contractnumber')")

spark.sql("SELECT * FROM x2").show()

CarbonData Table简介

简介

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

支持数据类型

CarbonData支持以下数据类型:

Int

String

BigInt

Smallint

Char

Varchar

Boolean

Decimal

Double

TimeStamp

Date

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

表1CarbonData数据类型

数据类型范围Int

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

说明:

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

String

100000字符

说明:

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

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”。

新建CarbonData Table

操作场景

使用CarbonData前需先创建表,才可在其中加载数据和查询数据。可通过Create Table命令来创建表。该命令支持使用自定义列创建表。

使用自定义列创建表

可通过指定各列及其数据类型来创建表。

命令示例:

CREATE TABLE IF NOT EXISTS productdb.productSalesTable (

productNumber Int,

productName String,

storeCity String,

storeProvince String,

productCategory String,

productBatch String,

saleQuantity Int,

revenue Int)

STORED BY 'org.apache.carbondata.format'

TBLPROPERTIES (

'table_blocksize'='128',

'DICTIONARY_EXCLUDE'='productName',

'DICTIONARY_INCLUDE'='productNumber');

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

表1表信息定义

参数描述productSalesTable

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

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

productdb

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

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

productName

storeCity

storeProvince

procuctCategory

productBatch

saleQuantity

revenue

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

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

table_blocksize

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

如果“table_blocksize”值太小,数据加载时,生成过多的小数据文件,可能会影响HDFS的使用性能。

如果“table_blocksize”值太大,数据查询时,索引匹配的block数据量较大,某些block会包含较多的blocklet,导致读取并发度不高,从而降低查询性能。

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

DICTIONARY_EXCLUDE

不生成字典。适用于high-cardinality列,系统默认的行为是为string类型的列做字典编码,但是,如果字典值过多,会导致字典转换操作成为性能瓶颈,反而降低了性能。一般情况下,列的cardinality高于5万,可以被认定为high-cardinality,应该使用DICTIONARY_EXCLUDE排除掉字典编码,该参数为可选参数。

说明:

非字典列支持Int,String,BigInt,Long和TimeStamp数据类型。

TimeStamp数据类型默认为DICTIONARY_EXCLUDE列。

DICTIONARY_INCLUDE

对指定列生成字典。适用于非high-cardinality列,可以提升字典列上的groupby性能,为可选参数。一般情况下,DICTIONARY_INCLUDE包含的列的cardinality不应该高于5万。

yH5BAEAAAAALAAAAAABAAEAAAIBRAA7说明:

所有integer类型度量均以BigInt类型进行处理与显示。

CarbonData遵循严格解析,因此任何不可解析的数据都会被保存为null。例如,在BigInt列中加载double值(3.14),将会保存为null。

在Create Table中使用的Short和Long数据类型在DESCRIBE命令中分别显示为smallint和bigint。

可以使用DESCRIBE格式化命令查看表数据大小和表索引大小。

操作结果

根据命令创建表。

删除CarbonData Table

操作场景

可使用DROP TABLE命令删除表。删除表后,所有metadata以及表中已加载的数据都会被删除。

操作步骤

运行如下命令删除表。

命令:

DROP TABLE [IF EXISTS] [db_name.]table_name;

一旦执行该命令,将会从系统中删除表。命令中的“db_name”为可选参数。如果没有指定“db_name”,那么将会删除当前数据库下名为“table_name”的表。

示例:

DROP TABLE productdb.productSalesTable;

通过上述命令,删除数据库“productdb”下的表“productSalesTable”。

操作结果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值