Apache Spark

Apache Spark 自定义优化规则:Custom Optimizer Rule

我只是一个虾纸丫 提交于 2020-08-08 11:07:44
在 《Apache Spark 自定义优化规则:Custom Strategy》 文章中我们介绍了如何自定义策略,策略是用在逻辑计划转换到物理计划阶段。而本文将介绍如何自定义逻辑计划优化规则,主要用于优化逻辑计划,和前文不一样的地方是,逻辑优化规则只是等价变换逻辑计划,也就是 Logic Plan -> Login Plan,这个是在应用策略前进行的。 如果想及时了解 Spark 、Hadoop或者HBase相关的文章,欢迎关注微信公众号: iteblog_hadoop 假设我们有以下计算逻辑: val df = spark.range(10).toDF("counts") val iteblogDF = df.selectExpr("1 * counts ") println(iteblogDF.queryExecution.optimizedPlan.numberedTreeString) 我们有一张表,里面只有名为 counts 的一列,我们对表的每行都乘以 1,现在我们使用 iteblogDF.queryExecution.optimizedPlan.numberedTreeString 来看下上面表达式的优化之后的逻辑计划: 00 Project [(1 * id#0L) AS (1 * counts)#4L] 01 +- Range (0, 10, step=1,

Spark Cache源代码分析

邮差的信 提交于 2020-08-08 10:34:37
1. spark cache原理 Task运行的时候是要去获取Parent的RDD对应的Partition的数据的,即它会调用RDD的iterator方法把对应的Partition的数据集给遍历出来,具体流程如下图: 从图中可以看出,spark cache的本质就是将RDD的数据存储在了BlockManager上,下次重新使用的时候直接从BlockManager获取即可,免去了从“头”计算的开销。 2.cache 源代码分析 首先还是从RDD.scala的iterator方法开始,如果storageLevel不等于None,则调用getOrCompute,如果storageLevel等于None,则调用computeOrReadCheckpoint从头开始计算或者从checkpoint读取。 final def iterator ( split : Partition , context : TaskContext ) : Iterator [ T ] = { // storageLevel不等于NONE,说明RDD已经cache if ( storageLevel != StorageLevel . NONE ) { getOrCompute ( split , context ) } else { // 进行rdd partition的计算或者从checkpoint读取数据

Spark算子分类

风格不统一 提交于 2020-08-08 09:40:42
Action算子 reduce collect count first take takeSample takeOrdered saveAsTextFile saveAsSequenceFile saveAsObjectFile countByKey foreach Shuffle算子 distinct reduceByKey groupBy groupByKey aggregateByKey combineByKey sortByKey sortBy coalesce repartition intersection subtract subtractByKey join leftOuterJoin Transformation算子 map filter flatMap mapPartitions mapPartitionsWithIndex sample union intersection distinct groupByKey reduceByKey aggregateByKey sortByKey join cogroup cartesian pipe coalesce repartition repartitionAndSortWithinPartitions 来源: oschina 链接: https://my.oschina.net/chinahufei/blog

玩转热门框架 用企业级思维 开发通用够硬的大数据平台

蓝咒 提交于 2020-08-08 05:58:44
课程分析了主流企业的大数据架构、带领大家构建自己的通用型大数据平台。从企业需求入手,构建集数据采集、数据存储、数据处理与分析、BI应用、权限管理、系统监控等于一体的大数据应用平台,内容涵盖各类开源组件基础知识、优化技巧、应用场景和常见面试问题等,帮助我们快速掌握大数据平台开发技术,迅速建立大数据技术的宏观的认识。最后实现了可视化展示。非常适合想要通揽大数据全貌、了解企业级开发的你 第1章 课程导学与学习指南 本章中将向大家介绍课程能学到什么、解决什么实际问题、项目成果展示,课程整体安排以及如何学习更高效。 第2章 认识企业中的大数据平台 为什么要有大数据平台?大数据平台究竟是为了解决什么问题产生的?如何判断一个大数据平台的好坏?在设计一个数据平台时,需要注意哪些,有什么步骤。各大企业现有的解决方案有哪些,常见的技术栈有哪些,我们自己设计的这个通用的大数据平台是什么结构。... 第3章 大数据平台 —— 数据仓库之离线&实时 你真的理解数据仓库是什么吗?数据仓库如何进行分层,为什么要分层呢?分层一定好吗?带你理解数据仓库,逐步掌握离线数仓工具Hive。对比离线数仓和实时数仓,了解实时数仓常见架构。 第4章 大数据平台——数据仓库之权限管理 解决三大问题:数仓安全问题,对比常见权限认证框架,使用Ranger开发数仓权限模块;数据来源问题,对常用数据采集工具进行介绍

英文自我介绍

无人久伴 提交于 2020-08-08 05:21:19
Hello ! My name is Leo, I’m very happy and excited for having a face to face interview in your company. I hope i can make a good performance today. Now I would like to introduce myself briefly. I am 29 years old, born in Guangdong province, graduated from the south university of china. My major is Software engineering, and I got my bachelor degree after my graduation in the year of 2014. I have about 5 years work experiences. At present, I worked for my company as a big data develop engineer. Responsible for the selection of big data technologies, including off-line, real-time and machine

SPARK中文峰会上海会场预告篇|Ray On Spark

喜夏-厌秋 提交于 2020-08-08 04:58:40
本周六下午,上海会场的讲师已经准备就绪~ SPARK + AI SUMMIT 2020 中文精华版线上峰会 ,十四位来自北京、上海、杭州、硅谷的PMC和意见领袖,一一还原英文现场的经典分享。 除 Databricks、Facebook、阿里巴巴、Intel 、领英等一线厂商的经典应用场景外,还有Ray、SQL、Structured Streaming、 MLflow、Koalas、K8s、Delta lake、Photon等新奇议题及社区生态的最新落地。 点击 详细议程 7月4日下午议题: 使用 RayOnSpark 在大数据平台上运行新兴的人工智能应用 黄凯 Intel 大数据团队软件工程师。负责开发基于 Apache Spark 的数据分析和 AI 平台,同时支持企业客户在大数据平台上构建端到端的深度学习应用。他是大数据和 AI 开源项目 An 来源: oschina 链接: https://my.oschina.net/u/4321806/blog/4331384

计算压力倍增,携程度假起价引擎架构演变

假如想象 提交于 2020-08-07 21:05:30
携程度假每个旅游线路在每期、每天的价格均有变化,而价格变化又受到多个因素影响。为尽快捕捉到价格变化,需要不断优化调整架构,使得价格调整灵敏度更高更准。这对被调服务及硬件产生了极大的压力,也带来了新的瓶颈。那么,携程是如何解决这一难题的呢?本文是携程高级研发经理陈少伟在「云加社区沙龙online」的分享整理,着重介绍了携程度假起价引擎架构不断演进的过程。 点击视频,查看完整直播回放 一、背景介绍 1. 什么是度假起价引擎? 首先,解释一下什么是度假起价引擎。度假每个旅游线路涉及到不同的出发地,不同的出发地下有不同可出发班期,每个班期都有对应的这一天的价格。旅游产品的价格由多个资源组成的,任何一个资源价格发生变化,都会影响到产品的价格。 为了尽快捕捉到价格变化,需要有一个专门的价格系统去监测不同资源的价格变化,这就是起价引擎。 2. 旅游电商和普通电商的区别是什么? 普通电商的商品基本都是标品,价格和库存都针对的是单个SKU(StockKeeping Unit 库存单元),而旅游打包类商品都是由多个SKU组成(静态和实时匹配),任意一个SKU的价格、库存发生变化,都会直接影响到它所关联的所有产品。正是由于变量太多,这也给定价带来了极大的挑战。 上图展示的是京东上一个商品截图,我们可以看到它涉及到两个SKU,基本上像这种情况,每个SKU的价格都是比较确定的。 3.

第四范式:分布式机器学习框架与高维实时推荐系统

荒凉一梦 提交于 2020-08-07 16:45:46
导读: 随着互联网的高速发展和信息技术的普及,企业经营过程中产生的数据量呈指数级增长,AI 模型愈发复杂,在摩尔定律已经失效的今天,AI 的落地面临着各种各样的困难。本次分享的主题是分布式机器学习框架如何助力高维实时推荐系统。 机器学习本质上是一个高维函数的拟合,可以通过概率转换做分类和回归。而推荐的本质是二分类问题,推荐或者不推荐,即筛选出有意愿的用户进行推荐。 本文将从工程的角度,讲述推荐系统在模型训练与预估上面临的挑战,并介绍第四范式分布式机器学习框架 GDBT 是如何应对这些工程问题的。 主要内容包括: 推荐系统对于机器学习基础架构的挑战 大规模分布式机器学习场景下,不同算法的性能瓶颈和解决思路 第四范式分布式机器学习框架 GDBT 面临的网络压力及优化方向 01 推荐系统对于机器学习基础架构的挑战 1. 海量数据+高维特征带来极致效果 传统的推荐系统中,我们只用简单的模型或者规则来拟合数据,就可以得到一个很好的效果 ( 因为使用复杂的模型,很容易过拟合,效果反而越来越差 )。但是当数据量增加到一定的数量级时,还用简单的模型或者规则来拟合数据,并不能充分的利用数据的价值,因为数据量增大,推荐的效果上限也随之提升。这时,为了追求精准的效果,我们会把模型构建的越来越复杂,对于推荐系统而言,由于存在大量的离散特征,如用户 ID、物品 ID 以及各种组合

OSS 数据湖实践 —— 使用EMR JindoFs Cache提升性能

妖精的绣舞 提交于 2020-08-07 03:48:01
通过使用cache缓存机制,减少数据分析处理过程中直读OSS的次数,不仅能够提高性能,更能减少与OSS的交互流量,减少数据分析成本与时间开销。 前提条件 已注册阿里云账号,详情请参见注册云账号。 已开通E-MapReduce服务和OSS服务。 已完成云账号的授权,详情请参见角色授权。 已创建Haoop集群,且带有Hive组件,且配置OSS数据源。 步骤一:设置JindoFs Cache 打开smartdata服务中client配置, 把jfs.cache.data-cache.enable为1, 表示打开JindoFs的cache功能打开 步骤二:进行作业测试 数据分析作业具体可看其他OSS数据湖实践文档功能 OSS Spark 实践文档 OSS Flink 实践文档 OSS Hive 实践文档 来源: oschina 链接: https://my.oschina.net/u/4360916/blog/4292519

Hadoop凉凉?不,它仍是大厂铁饭碗

守給你的承諾、 提交于 2020-08-07 01:45:20
关于Hadoop可能很多都是坏消息。 在2018年10月,最大的两个Hadoop发行版厂商Cloudera和Hortonworks宣布合并,抱团取暖,由于财报不太好,高层也离职了。还有第三大Hadoop发行版厂商MapR差点破产,幸亏最后被HPE收购....... 1 Hadoop的整体印象 一句话概括:Hadoop就是存储海量数据和分析海量数据的工具。 Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。 HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。 MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。 2 Hadoop的优势 | 高可靠性 :Hadoop 按位存储和处理数据的能力值得人们信赖。 | 高扩展性 : Hadoop 是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以干计的节点中。 | 高效性 : Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。 |