CarbonData简介

目录

一、什么是CarbonData

Apache CarbonData是一种新的大数据文件格式,使用先进的柱状存储、索引、压缩和编码技术来提高计算效率,这有助于在pb级的数据上以数量级的速度加快查询速度。

CarbonData特别设计了多种优化策略,如多级索引、压缩和编码技术,旨在提高包含filter、aggregation和counst distinct等分析查询的性能,用户期望在拥有较少节点的商用集群上获得对TB级别数据的亚秒级响应。

 

CarbonData具有以下优点:

  • 独特的数据组织形式:以获得更快的查询性能及更少的数据检索成本

  • 进一步的下推优化策略:与Spark进行深度集成,以改进Spark DataSource API和其他实验特性,从而确保计算在接近数据的地方执行,从而最大限度地减少数据的读、处理、转换和传输(shuffle)

  • 多级索引:有效地修剪要扫描的文件和数据,从而减少I/O扫描和CPU处理

二、CarbonData的特性和函数

CarbonData拥有丰富的特性集来支持大数据分析中的各种用例。下表列出了CarbonData支持的主要特性。

2.1 表管理

  • DDL (Create, Alter,Drop,CTAS)

    CarbonData提供自己的DDL来创建和管理CarbonData表。这些DDL符合Hive、Spark SQL格式,并支持利用CarbonData功能的附加属性和配置。

  • DML(Load,Insert)

    CarbonData提供自己的DML来管理CarbonData表中的数据。它通过配置添加了许多自定义,以根据用户需求场景完全自定义行为。

  • Update and Delete

    CarbonData支持大数据的更新和删除。CarbonData提供了类似于Hive的语法来支持CarbonData表上的IUD操作。

  • Segment Management

    CarbonData拥有独特的Segment概念,可以有效地管理对CarbonData表的增量负载。Segment管理有助于轻松地控制表,执行简单的保留,还用于为正在执行的操作提供事务功能。

  • Partition

    CarbonData支持两种分区。第一种分区类似于hive分区。第二种分区为CarbonData的分区方式,支持hash,list,range分区。

  • Compaction

    CarbonData使用Segmen管理增量load。Compaction有助于压缩不断增长的片段数量,还有助于提升查询中的filter剪枝。

  • External Tables

    CarbonData可以读取任何CarbonData文件并自动从文件中推断schema,并提供一个关系表视图来使用Spark或任何其他应用程序执行sql查询。

2.2 数据模型(datamaps)

  • Pre-Aggregate

    CarbonData有数据模型的概念,可以在查询时帮助裁剪数据,从而提高性能。预聚合表是一种可以按数量级提高查询性能的数据模型。CarbonData将自动预聚合增量数据并重新编写查询,以自动从最合适的预聚合表中获取数据,从而更快地提供查询。

  • Time Series

    CarbonData建立了对时间顺序(年、月、日、时、分、秒)的理解。时间序列是一个预聚合表,它可以在增量加载期间自动将数据上卷到所需的级别,并从最合适的预聚合表提供查询。

  • Bloom filter

    CarbonData支持bloom filter作为一种数据模型,可以快速有效地对数据进行裁剪,提高扫描速度和查询性能。

  • Lucene

    Lucene很受欢迎,用于索引长文本数据。CarbonData提供了一个lucene datamap,因此可以使用lucene对文本列建立索引,并使用索引结果对查询期间要检索的数据进行有效的修剪。

  • MV (Materialized Views)

    MV是一种预聚合表,它支持有效的查询重写和处理。CarbonData提供了可以重写查询以从任何表(包括非CarbonData表)获取数据的MV。典型的用例是将非carbondata事实表的聚合数据存储到carbondata中,并使用mv重写查询以从carbondata中获取数据。

2.3 流式处理

  • Spark Streaming

    CarbonData支持将数据以近乎实时的方式传送到CarbonData,并可立即进行查询。CarbonData提供了一种DSL来方便地创建源和接收表,而不需要用户编写自己的应用程序。

2.4 SDK

  • CarbonData writer

    CarbonData支持使用SDK编写来自非spark应用程序的数据。用户可以使用SDK从自定义应用程序生成carbondata文件。典型的用例是将流应用程序插入kafka,并使用carbondata作为sink(目标)表进行存储。

  • CarbonData reader

    CarbonData支持使用SDK从非spark应用程序读取数据。用户可以使用SDK从他们的应用程序中读取carbondata文件并进行定制处理。

2.5 存储

  • S3

    CarbonData可以向S3、OBS或任何云存储写入数据,以确保符合S3协议。CarbonData使用HDFS api写入云对象存储。

  • HDFS

    CarbonData使用HDFS api从HDFS中读写数据。CarbonData可以利用位置信息,有效地建议spark在数据附近运行任务。

  • Alluxio

    CarbonData还支持使用Alluxio进行读写。

 

三、集成大数据生态系统

CarbonData可以和Spark、Presto等大数据系统进行集成。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值