写点什么

如何弥合 Spark Datasets 和 DataFrames 之间的性能差距?

  • 2019-08-15
  • 本文字数:2167 字

    阅读完需:约 7 分钟

如何弥合 Spark Datasets 和 DataFrames 之间的性能差距?

ArchSummit深圳2019大会上,蔡東邦 (DB Tsai)讲师做了《如何弥合 Spark Datasets 和 DataFrames 之间的性能差距?》主题演讲,主要内容如下。


演讲简介


Bridging the gap between Spark Datasets and DataFrames


Apple leverages Apache Spark for processing large datasets to power key components of Apple’s production services. The majority of users rely on Spark SQL to benefit from state-of-the-art optimizations in Catalyst and Tungsten. As there are multiple APIs to interact with Spark SQL, users have to make a wise decision which one to pick. While DataFrames and SQL are widely used, they lack type safety so that the analysis errors will not be detected during the compile time such as invalid column names or types. Also, the ability to apply the same functional constructions as on RDDs is missing in DataFrames. Datasets expose a type-safe API and support for user-defined closures at the cost of performance.


译文参考:


Apple 利用 Apache Spark 处理大型数据集,为 Apple 生产服务的关键组件提供动力。 大多数用户依靠 Spark SQL 从 Catalyst 和 Tungsten 中最先进的优化中受益。由于有多个 API 与 Spark SQL 交互,因此用户必须明智地决定最终选择哪一个。虽然 DataFrame 和 SQL 被广泛使用,但它们缺乏类型安全性,因此在编译期间无法检测到分析错误,例如无效的列名称或类型。此外,在 RDDs 上应用相同功能结构的功能却不能在 DataFrames 中使用。Datasets 以牺牲性能为代价公开了类型安全的 API,并支持用户定义的闭包。


This talk will explain cases when Spark SQL cannot optimize typed Datasets as much as it can optimize DataFrames. We will also present an effort to use bytecode analysis to convert user-defined closures into native Catalyst expressions. This helps Spark to avoid the expensive conversion between the internal format and JVM objects as well as to leverage more Catalyst optimizations. A consequence, we can bridge the gap in performance between Datasets and DataFrames, so that users do not have to sacrifice the benefits of Datasets for performance reasons.


本演讲将重点介绍 Spark SQL 无法优化类型化 Datasets 的情况,因为它可以优化 DataFrame。我们还将努力使用字节码分析将用户定义的闭包转换为本机 Catalyst 表达式。这有助于 Spark 避免在内部格式和 JVM 对象之间的昂贵转换,以及利用更多的 Catalyst 优化。因此,我们可以弥合 Datasets 和 DataFrames 之间的性能差距,这样用户就不会因性能原因而牺牲 Datasets 的优势。


Outlines of the speech


  1. Apache Spark

  2. Dataframe vs Dataset

  3. Bytecode Analysis

  4. JVM GC


Key points


  • The audiences will learn how Apache Spark works internally; particularly on how catalyst optimizer optimizes the execution plans.

  • Then I will go through the current problems of Spark’s Dataset implementation which expose a type-safe API and support for user-defined closures at the cost of performance.

  • Finally, I’ll talk about how we do bytecode analysis to understand the JVM bytecode, and then convert them into SQL expressions for further optimization. In some of our Spark jobs, we see 40x performance gain resulting less required resource and faster deliver time.

  • 帮助听众了解 Apache Spark 内部的工作流程,尤其是 Catalyst 优化器如何优化执行计划。

  • 了解 Spark Dataset 当前在应用方面的问题,这些问题公开了类型安全的 API,并以性能为代价支持用户定义的闭包。

  • 最后,我将分享我们是如何实现字节码分析的案例,帮助理解 JVM 字节码,然后将它们转换为 SQL 表达式以进一步优化。在我们所做的一些 Spark 工作中,我们看到了 40 倍的性能提升,从而减少了所需的资源,交付时间也更快。


讲师介绍


蔡東邦 (DB Tsai)


Apple Staff Software Engineer & Apache Spark PMC


DB Tsai is an Apache Spark PMC / Committer and an open source and staff software engineer at Apple Siri. He implemented several algorithms including linear models with Elastici-Net (L1/L2) regularization using LBFGS/OWL-QN optimizers in Apache Spark. Prior to joining Apple, DB worked on Personalized Recommendation ML Algorithms at Netflix. DB was a Ph.D. candidate in Applied Physics at Stanford University. He holds a Master’s degree in Electrical Engineering from Stanford.


译文参考:


蔡東邦老师是 Apache Spark PMC / Committer,同时也是 Apple Siri 的主任工程师。他将多个算法应用到了 Apache Spark 当中,包括使用了 LBFGS / OWL-QN 优化器 的 Elastici-Net(L1 / L2)正则化的线性模型。在加入 Apple Siri 之前,蔡老师在 Netflix 从事个性化推荐机器学习算法的研究工作。目前是斯坦福大学应用物理专业的博士候选人,也获得了斯坦福大学电气工程硕士学位。












完整演讲 PPT 下载链接


https://archsummit.infoq.cn/2019/shenzhen/schedule


2019-08-15 00:005926

评论

发布
暂无评论
发现更多内容

如何降低电动汽车软件的开发成本和风险?

龙智—DevSecOps解决方案

电动汽车市场 电动汽车软件

AE/PR插件-去朦胧除雾霾增强色彩调色插件ClearPlus

真大的脸盆

Mac AE插件 AE

麻了,一个操作把MySQL主从复制整崩了

JAVA旭阳

Java MySQL

澳鹏与 Reka AI 强强联合,构建高质量的多模态 LLM 应用

澳鹏Appen

人工智能 数据标注 生成式AI

可计算存储是否真的与众不同?

ScaleFlux

压缩数据 计算与存储 固态硬盘

从IDC数据库安全报告,看OceanBase安全能力

OceanBase 数据库

数据库 oceanbase

网易云信 RTC 音频问题排查的挑战与实践

网易云信

RTC 实时音视频 AIGC

【网易云信】网易云信 RTC 音频问题排查的挑战与实践

网易智企

RTC 实时音视频 AIGC

软件测试/测试开发丨Python学习笔记之封装、继承、多态、模块

测试人

Python 软件测试 自动化测试 测试开发

[杂谈]大型JSON数据切分(Java Jackson)

alexgaoyh

json elasticsearch Jackson 分割

通过自定义域名 + SSL 的方式访问 Amazon MQ for RabbitMQ

亚马逊云科技 (Amazon Web Services)

MoE 系列(三)|使用 Istio 动态更新 Go 扩展配置

SOFAStack

golang 程序员 开发 java; envoy

Git合并冲突的根本原因和解决方法

龙智—DevSecOps解决方案

git merge

AntDB数据库体验室上线啦!一站式培训+实操,带您感受“电信级”国产数据库的魅力

亚信AntDB数据库

AntDB AntDB数据库 企业号 5 月 PK 榜

用LeangooScrum敏捷工具做缺陷管理和迭代规划和迭代执行

顿顿顿

Scrum 敏捷开发 敏捷项目管理 敏捷工具 scrum敏捷工具

专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?

3DCAT实时渲染

元宇宙 实时渲染云

2023 开源之夏|和 Milvus & Towhee 一起玩转 AI、享开源、得奖金

Zilliz

Milvus Zilliz 向量数据库 Towhee 开源之下

【开源之夏 2023】欢迎报名 SOFAStack 社区项目!

SOFAStack

开源 开发 SOFA 开源之夏 程序员 java

大数据如何助力营销(1)市场调研

MobTech袤博科技

现代IT服务与企业服务管理:借助Jira Service Management实现团队互联,打造高效透明的服务体验

龙智—DevSecOps解决方案

ITSM

AI数据采集——数字世界的智能伙伴

数据堂

AI别来搅局,chatGPT的世界不懂低代码

引迈信息

人工智能 低代码 ChatGPT JNPF

Redis Operator在中原银行实践落地及能力创新

中原银行

redis 云原生 operator redis operator

软件测试丨Pytest-运行用例、常用参数、执行pytest、异常处理

测试人

软件测试 自动化测试 测试开发 pytest

面对复杂的系统与众多的插件,如何确保Jenkins项目的安全性?

龙智—DevSecOps解决方案

ci 持续集成 jenkins

AI数据采集的挑战和解决方案

数据堂

用户费力度建设初探

Qunar技术沙龙

去哪儿网 用户费力度

来了!昇腾MindStudio全流程工具链分论坛精彩回顾,助力高效开发和迁移效率提升

极客天地

如何弥合 Spark Datasets 和 DataFrames 之间的性能差距?_ArchSummit_蔡東邦 (DB Tsai)_InfoQ精选文章