开发者学堂课程【数据湖 JindoFS + OSS 实操干货36讲:Spark 对 OSS 上的 ORC 数据进行查询加速 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/833/detail/13980
Spark 对 OSS 上的 ORC 数据进行查询加速
内容介绍
一、ORC 简介
二、JIndoFS 列存加速
三、性能对比
四、演示
一、ORC 简介
(1)ORC: Hadoop生态的列存系统
l 来自 Hive 的列式存储
l 支持列裁剪
l 包含类型信息,自描述
l 支持 Encoding/ 压缩
(2)Spark 与 ORC
l Spark Hive 表
l CREATE TABLE tablename …STORED AS ORC;
l 使用Hive ORC
l Spark.sql.hive.convertMetastoreOrc
l Spark Datasource 表
l CREATE TABLE tablename…USING ORC;
l 使用 Apache ORC
二、JIndoFS 列存加速
(1)JindoFS 列存加速:痛点
l 对象存储水平扩展能力强,但请求延时高
l 本地盘/云盘带宽有限,中间数据越少越好
l IO 需要与 shuffle 数据竞争网络咨源
l 计算越快越好
(2)JindoFS 列存加速
l JindoTable Native Engine
l 高速读取
l 查询计划下推(高速计算)
l 表/分区/列级别的数据缓存,消除带宽瓶颈和性能波动
l 支持 JindoFS/OSS
l 支持 ORC/Parquet 格式
l 高效的预计算(规划)
l 可插拔,兼容开源
(3)用法
l 命令行参数
l --conf spark.sql.extensions=com.aliyun.emr.sql.JindoTableExtension
l 配置到 spark- defaults
l spark.sql.extensions
com.aliyun.emr.sql.Jindo TableExtension
l Spark Hive 表需要确保
l spark.sql.hive.convertMetastoreOrc = true
l EMR-3.35/4.9/5.2 之后的版本
(4)加速原理
l Native Engine 直接把数据排在内存中供上层引擎使用
l Spark 通过 Unsafe 直接访问数据,无需拷贝数据
l Native Engine 异步读取文件
l 数据读取不等待上层引擎消费,性能更高
l 高并发
l 文件级别并发
l 列级别并发
l Native 实现算子
l 相比J ava 性能更优
(5)加速架构
l 一套 Native Engine 支持不同引擎
l AliORC 提供 ORC 支持
l Native Engine 运行在 executor/PrestoWorker 中(客户端)
三、性能对比
1.Spark 性能对比——配置
2. Spark 性能对比——结果:端到端总时间缩短23.6%。
四、演示
1.演示
l 配置 Spark
l 读取鸢尾花数据集以 ORC 格式写入 OSS 路径
l 从OSS查询鸢尾花数据集
2.相关资料
l Jindodata相 关文档:
https://qithub.com/aliyun/alibabacloud-indodata
l 计算加速使用文档:
https://help. aliyun.com/document _detail/213329.html