Spark 对 OSS 上的 ORC 数据进行查询加速 | 学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习 Spark 对 OSS 上的 ORC 数据进行查询加速。

开发者学堂课程【数据湖 JindoFS + OSS 实操干货36讲Spark 对 OSS 上的 ORC 数据进行查询加速 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/833/detail/13980


Spark 对 OSS 上的 ORC 数据进行查询加速

 

内容介绍

一、ORC 简介

二、JIndoFS 列存加速

三、性能对比

四、演示


一、ORC 简介

1ORC: Hadoop生态的列存系统

l  来自 Hive 的列式存储

l  支持列裁剪

l  包含类型信息,自描述

l  支持 Encoding/ 压缩

2Spark 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 tablenameUSING ORC;

l  使用 Apache ORC

 

二、JIndoFS 列存加速

1JindoFS 列存加速:痛点

l  对象存储水平扩展能力强,但请求延时高

l  本地盘/云盘带宽有限,中间数据越少越好

l  IO 需要与 shuffle 数据竞争网络咨源

l  计算越快越好

2JindoFS 列存加速

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 性能对比——配置

1.png2. 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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
4月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
70 3
|
3月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
6月前
|
存储 分布式计算 Java
|
6月前
|
分布式计算 监控 大数据
如何处理 Spark 中的倾斜数据?
【8月更文挑战第13天】
284 4
|
6月前
|
存储 缓存 分布式计算
|
6月前
|
SQL 存储 分布式计算
|
6月前
|
分布式计算 Apache 数据安全/隐私保护
流计算引擎数据问题之在 Spark Structured Streaming 中水印计算和使用如何解决
流计算引擎数据问题之在 Spark Structured Streaming 中水印计算和使用如何解决
79 1
|
7月前
|
SQL 分布式计算 数据处理
MaxCompute操作报错合集之使用Spark查询时函数找不到的原因是什么
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
7月前
|
分布式计算 数据处理 流计算
实时计算 Flink版产品使用问题之使用Spark ThriftServer查询同步到Hudi的数据时,如何实时查看数据变化
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
分布式计算 Java Spark