【摘要】 在Spark SQL中使用CarbonData

【准备CarbonData】

在浏览器地址栏输入以下链接,点击"download"按钮下载已经准备好的CarbonData jar包

链接:https://github.com/QiangCai/carbonjars/blob/master/master/apache-carbondata-2.1.0-SNAPSHOT-bin-spark2.4.5-hadoop2.7.2.jar

或者按以下指南编译carbondata源码

1. 下载源码

git clone https://github.com/apache/carbondata.git

2. 编译源码

参考:https://github.com/apache/carbondata/blob/master/build/README.md

3. 编译完成后可以在如下目录找到CarbonData包

./assembly/target/scala-2.1x/apache-carbondata*.jar

【准备Spark】

1. 下载spark 2.4.5

下载页面:https://spark.apache.org/downloads.html

2. 本地启动spark-sql

./bin/spark-sql \
--conf spark.sql.extensions=org.apache.spark.sql.CarbonExtensions \
--jars <CarbonData jar 包路径>

【使用CarbonData】

1. 创建database

CREATE DATABASE carbondb location '<指定的database目录>';

2. 设置为当前database

USE carbondb;

3. 创建CarbonData表(使用TPC-H lineitem表举例)

创建lineitem在线商品信息表,在OPTIONS中sort_scope使用global_sort,并将sort_columns设置l_shipdate

更多相关资料参考:https://github.com/apache/carbondata/blob/master/docs/ddl-of-carbondata.md

CREATE TABLE IF NOT EXISTS lineitem(l_orderkey INT,l_partkey INT ,l_suppkey STRING,l_linenumber INT,l_quantity DOUBLE,l_extendedprice DOUBLE,l_discount DOUBLE,l_tax DOUBLE,l_returnflag STRING,l_linestatus STRING,l_shipdate DATE,l_commitdate DATE,l_receiptdate DATE,l_shipinstruct STRING,l_shipmode STRING,l_comment STRING)
USING carbondata
OPTIONS('sort_scope'='global_sort', 'sort_columns'='l_shipdate');

4. 入库数据

支持直接入库TPC-H dbgen生成的CSV格式的数据文件lineitem.tbl

或者直接使用本文附件中的lineitem.txt文件,包含了1000条样例数据;

入库期间将使用表属性sort_scope和sort_columns的信息对输入数据进行排序处理。

更多相关资料参考:https://github.com/apache/carbondata/blob/master/docs/dml-of-carbondata.md

LOAD DATA INPATH 'lineitem.tbl/txt文件路径' INTO TABLE lineitem OPTIONS('delimiter'='|', 'header'='false');

5. 查询

TPC-H的query1语句查询指定发货日期之前的定价汇总报告;语句中含有l_shipdate的过滤操作,由于入库时已按该列对数据进行排序,因此查询时在driver侧通过索引能精确定位出含有过滤条件的数据块,减少了扫描的数据块数量。

另外,carbondata列式存储格式支持push down projection,仅需要扫描语句中使用了的列数据;同时又支持push down filter, 仅需要扫描符合过滤条件的列数据,进一步减少扫描的数据量。

SELECT l_returnflag,l_linestatus,sum(l_quantity) AS sum_qty,sum(l_extendedprice) AS sum_base_price,sum(l_extendedprice*(1-l_discount)) AS sum_disc_price,sum(l_extendedprice*(1-l_discount)*(1+l_tax)) AS sum_charge,avg(l_quantity) AS avg_qty,avg(l_extendedprice) AS avg_price,avg(l_discount) AS avg_disc,count(*) AS count_order
FROM lineitem
WHERE l_shipdate <= date('1993-09-02')
GROUP BY l_returnflag, l_linestatus
ORDER BY l_returnflag, l_linestatus;

 lineitem.txt

点击这里,了解更多精彩内容

Apache CarbonData 2.0 开发实用系列之一:与Spark SQL集成使用相关推荐

  1. 「Spark从入门到精通系列」4.Spark SQL和DataFrames:内置数据源简介

    来源 |  Learning Spark Lightning-Fast Data Analytics,Second Edition 作者 | Damji,et al. 翻译 | 吴邪 大数据4年从业经 ...

  2. Apache CarbonData 1.5.0编译及安装

    2019独角兽企业重金招聘Python工程师标准>>> 一.编译环境描述 OpenStack创建五个虚拟机,其中1个主节点(hostname为bigdatamaster),4个从节点 ...

  3. Apache Spark SQL 章节六00

    Spark SQL 编程指南 Spark SQL是用于结构化数据处理的一个模块.同Spark RDD 不同地方在于Spark SQL的API可以给Spark计算引擎提供更多地 信息,例如:数据结构.计 ...

  4. 2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市!

    2018年又传喜报!热烈祝贺王家林大师大数据经典著作<Spark SQL大数据实例开发教程> 畅销书籍 出版上市! 作者: 王家林 段智华  条码书号:9787111591979 出版日期 ...

  5. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    用SignalR 2.0开发客服系统[系列3:实现点对点通讯] 原文:用SignalR 2.0开发客服系统[系列3:实现点对点通讯] 前言 目录: 用SignalR 2.0开发客服系统[系列1:实现群 ...

  6. Apache Spark1.1.0部署与开发环境搭建 - Mark Lin

    Spark是Apache公司推出的一种基于Hadoop Distributed File System(HDFS)的并行计算架构.与MapReduce不同,Spark并不局限于编写map和reduce ...

  7. 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]

    原文:用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点] 前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通 ...

  8. vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺

    vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺 首先我们要简单了解一下vSphere整体设计结构. 接下来开始做服务器吧. 一.先做ESXi5.0服务器 找到一台干净服务器 ...

  9. 音视频开发-SRS 4.0流媒体服务器系列

    0 SRS 4.0流媒体服务器入门系列 结合SRS官方Wiki以及本人对SRS的理解,推出<SRS 4.0流媒体服务器入门系列>,包括内容: SRS 4.0 开发环境搭建 SRS 4.0 ...

最新文章

  1. You can't specify target table for update in FROM clause
  2. python switch_从邮箱验证小项目说python字符串判断与if判断那些事儿
  3. ssl证书链的验证的其它方式
  4. 2、使用Keras构建回归模型
  5. 二叉树叶子结点个数统计
  6. JSP教程:学习路线和开发工具安装视频
  7. 微软的产品激活中心电话
  8. ArchLinux安装配置及美化
  9. MediaSession框架全解析
  10. Simulink步长选择
  11. 用SPSS-Modeler分析银行信用风险评分方法
  12. java编写三角形面积_用Java描述一个三角形,提供计算三角形面积方法.三角形的三个边长从键盘输入....
  13. 我的工程师爸爸 - 音频应用DIY系列之三:汤姆猫
  14. 杭电2818——带权并差集
  15. 软件测试 | 测试开发 | 黑盒测试方法论—场景法
  16. 蒲公英——APP内测分发平台
  17. JMS基本概念和模型
  18. 第五届蓝桥杯真题解析【JavaC组】
  19. veritas msi_使用适用于AIX 5.3和6.1的Veritas Volume Manager(VxVM)V5管理逻辑卷
  20. Golang之NSQ

热门文章

  1. es6 async函数的语法
  2. npm 删除依赖包_npm 和 yarn 你选哪个?
  3. ubuntu emacs的安装
  4. Python图像处理库PIL的ImageStat模块介绍
  5. java常见面试题——java常见笔试题
  6. Codeforces 739B Alyona and a tree (树上路径倍增及差分)
  7. 返回一个一维整数数组中最大子数组的和
  8. git c#,子文件的添加
  9. VC/MFC 键盘钩子,代码片断
  10. ADO.net中临时表DataTable的简单应用