Apache CarbonData 2.0 开发实用系列之一:与Spark SQL集成使用
【摘要】 在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集成使用相关推荐
- 「Spark从入门到精通系列」4.Spark SQL和DataFrames:内置数据源简介
来源 | Learning Spark Lightning-Fast Data Analytics,Second Edition 作者 | Damji,et al. 翻译 | 吴邪 大数据4年从业经 ...
- Apache CarbonData 1.5.0编译及安装
2019独角兽企业重金招聘Python工程师标准>>> 一.编译环境描述 OpenStack创建五个虚拟机,其中1个主节点(hostname为bigdatamaster),4个从节点 ...
- Apache Spark SQL 章节六00
Spark SQL 编程指南 Spark SQL是用于结构化数据处理的一个模块.同Spark RDD 不同地方在于Spark SQL的API可以给Spark计算引擎提供更多地 信息,例如:数据结构.计 ...
- 2018年又传喜报!热烈祝贺王家林大师大数据经典著作《Spark SQL大数据实例开发教程》 畅销书籍 出版上市!
2018年又传喜报!热烈祝贺王家林大师大数据经典著作<Spark SQL大数据实例开发教程> 畅销书籍 出版上市! 作者: 王家林 段智华 条码书号:9787111591979 出版日期 ...
- 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]
用SignalR 2.0开发客服系统[系列3:实现点对点通讯] 原文:用SignalR 2.0开发客服系统[系列3:实现点对点通讯] 前言 目录: 用SignalR 2.0开发客服系统[系列1:实现群 ...
- Apache Spark1.1.0部署与开发环境搭建 - Mark Lin
Spark是Apache公司推出的一种基于Hadoop Distributed File System(HDFS)的并行计算架构.与MapReduce不同,Spark并不局限于编写map和reduce ...
- 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]
原文:用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点] 前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通 ...
- vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺
vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺 首先我们要简单了解一下vSphere整体设计结构. 接下来开始做服务器吧. 一.先做ESXi5.0服务器 找到一台干净服务器 ...
- 音视频开发-SRS 4.0流媒体服务器系列
0 SRS 4.0流媒体服务器入门系列 结合SRS官方Wiki以及本人对SRS的理解,推出<SRS 4.0流媒体服务器入门系列>,包括内容: SRS 4.0 开发环境搭建 SRS 4.0 ...
最新文章
- You can't specify target table for update in FROM clause
- python switch_从邮箱验证小项目说python字符串判断与if判断那些事儿
- ssl证书链的验证的其它方式
- 2、使用Keras构建回归模型
- 二叉树叶子结点个数统计
- JSP教程:学习路线和开发工具安装视频
- 微软的产品激活中心电话
- ArchLinux安装配置及美化
- MediaSession框架全解析
- Simulink步长选择
- 用SPSS-Modeler分析银行信用风险评分方法
- java编写三角形面积_用Java描述一个三角形,提供计算三角形面积方法.三角形的三个边长从键盘输入....
- 我的工程师爸爸 - 音频应用DIY系列之三:汤姆猫
- 杭电2818——带权并差集
- 软件测试 | 测试开发 | 黑盒测试方法论—场景法
- 蒲公英——APP内测分发平台
- JMS基本概念和模型
- 第五届蓝桥杯真题解析【JavaC组】
- veritas msi_使用适用于AIX 5.3和6.1的Veritas Volume Manager(VxVM)V5管理逻辑卷
- Golang之NSQ