day63-Spark SQL下Parquet内幕深度解密
来源:互联网 发布:淘宝网店怎么有生意 编辑:程序博客网 时间:2024/06/05 00:22
DT大数据梦工厂联系方式:
新浪微博:www.weibo.com/ilovepains/
微信公众号:DT_Spark
博客:http://.blog.sina.com.cn/ilovepains
一:sparkSQL 下的Parquet意义再思考
存储空间包括:内存和磁盘,计算方面
如果说HDFS是大数据时代分布式文件系统存储的事实标准的话,parquet则是整个大数据时代文件存储格式的事实标准。
1、 速度更快:使用SparkSQL 操作普通文件CSV和ParQuet文件的速度比对上来看,绝大多数情况下使用parQuet会比使用cvs等普通文件块10被左右(在一些普通文件系统无法在Spark上成功运行程序的情况下,使用paquet很多情况下都可以运行成功)
2、Parquet的压缩技术非诚稳定出色,在sparkSql中对压缩技术的处理可能无法正常的完成工作(例如Lost task, Lost Executor),但是此时如果使用parquest就可以正常的完成。
3、极大的减少磁盘IO,通常情况下能减少75%的存储空间,由此可以极大的减少sparkSQL 处理数据的时候的数据出入内容,尤其在spark1.6.x 中推出过滤器,在一些情况下可以极大的进一步减少磁盘的IO和内存的占用。(例如)
4、Spark1.6.x+ Parquet极大的提升了数据扫描的吞吐量,这极大的提高了数据查询速度。
Spark1.6.x 和spark1.5.x相比较而言提升了大约1倍的速度,在spark1.6.x中操作Parquet的时候CPU的使用也进行了极大的优化,有效的降低了CPU的使用。
5、可以极大的优化Spark的调度和执行。测试如果spark采用parquet可以有效的减少Stage的执行消耗,同时可以优化执行路径:
二:SparkSQL 下的parquet内幕
1、 列式存储是以什么基础格式来存储数据的?表现上是树状数据结构,在内部有元数据的Table
2、 在具体的Parquet文件存储的时候有3个核心组成部分:
a) StorageFormat: Parquest定义了具体的数据内部的类型和存储格式
b) ObjectModel ConVerters: Parquet中负责计算框架中数据对象和Parquet文件中具体数据类型的映射
c) ObjectModels: 在parquet中具有自己的Object Model定义的存储格式例如说:Avro具有自己的Object Model,但是
3、
4、 举例说明
messageAddressBook {
required stringowner;
repeated stringownerPhoneNumbers;
repeated groupcontacts {
required string name; optional stringphoneNumber; }
}
required(出现1次),optional(出现0次或者1次),repeated(出现0次或者多次)
这个schema中每条记录表示一个人的AddressBook。有且只有一个owner,owner可以有0个或者多个ownerPhoneNumbers,owner可以有0个或者多个contacts。每个contact有且只有一个name,这个contact的phoneNumber可有可无。
第一点:就存储数据本身而言,只考虑叶子节点,,我们的叶子节点owner、ownerPhoneNumber、name、phoneNumber
第二点:schema实际上是一个Table
AddressBook
Owner
ownerPhoneNumber
第三点:对于Parquet文件而言,数据会被分成RowGroup(里面包含很多Column,每个Column有几个非常重要的特性例如RepatitionLevel,Definition Level)
第四点: column在parquet中是以page的方式存在的,Page中有RepatitionLevel,Definition Level等内容。
第五点: RowGroup在Parquet中是数据读写的缓存单元,所以对Rowgroup的设置会极大的影响parQuet的使用速度和效率,所以如果是分析日志的话,我们一般建议把Row group的缓存大小配置成大于256M很多人的配置都是大于1G,如果想带来最大化的运行效率强烈建议HDFS的Block大小和RowGroup一致。
第六点:在实际存储的把一个树状结构,通过巧妙的编码算法转换成二维码结构:
SparkSQL 将parquet作为内存默认的存储格式,
列式存储每一个列跟其他数据没有关系
查询引擎: Hive, Impala, Pig, Presto, Drill, Tajo, HAWQ, IBM BigSQL
计算框架: MapReduce, Spark, Cascading, Crunch, Scalding,Kite
数据模型: Avro, Thrift, Protocol Buffers, POJOs
- day63-Spark SQL下Parquet内幕深度解密
- Spark SQL下Parquet内幕深度解密
- Spark SQL下Parquet内幕深度解密
- spark sql下parquet内幕解密
- 第63课:Spark SQL下Parquet内幕深度解密学习笔记
- 大数据IMF传奇行动绝密课程第63课:Spark SQL下Parquet内幕深度解密
- Spark 2.0内幕深度解密
- day64 Spark SQL下Parquet的数据切分和压缩内幕详解
- day65-Spark SQL下Parquet深入进阶
- spark sql下使用parquet最佳实战
- 第61课:Spark SQL数据加载和保存内幕深度解密实战
- day61-Spark SQL数据加载和保存内幕深度解密实战
- 大数据IMF传奇行动绝密课程第64课:Spark SQL下Parquet的数据切分和压缩内幕详解
- 大数据IMF传奇行动绝密课程第61课:Spark SQL数据加载和保存内幕深度解密实战
- Spark RunTime内幕解密
- Spark Broadcast内幕解密
- spark Runtime内幕解密
- spark executor内幕解密
- Aptana Studio 3.0插件版
- main函数的参数
- 解决sudo status docker命令出错的问题
- 使用errno.h示例
- 【默慈金数+求逆元】HDU5673Robot【BestCoder Round #81 (div.2)】
- day63-Spark SQL下Parquet内幕深度解密
- BM算法模式匹配——字符串与KMP比较
- struts2(七)输入校验
- 学些HTML5的一些小记
- tomcat(supplement)HttpConnector.initialize() 和 start() 方法 以及 StandardContext.start()方法的分析
- 用windows下的上帝模式隐藏文件
- 计算机网络,网络层
- 湖南第十届省赛 Double Shortest Paths
- 网易云课堂第一周课程心得体会及课上笔记