Spencer Blog

失うこと 割り切れぬこと 割り切れぬこと 叶わないこと 信じぬくこと

Spark SQL(三)UDF&UDAF&开窗函数

Spark SQL UDF&DFA&Window Function

UDF 实现一个统计名字(name)长度的UDF函数 object MyUDF { def main(args: Array[String]) = { val conf = new SparkConf().setMaster("local[*]").setAppName("MyUDF") val sc = new SparkContext(conf) val sq...

Spark SQL(二)Spark On Hive

Spark SQL On Hive

hadoop1是hive存放元数据mysql服务器 hadoop3是启动metastore的hive服务器 hadoop4是hive client 概念 Spark on Hive Hive只是作为存储的角色 SparkSQL作为计算的角色 Hive on Spark Hive承担了一部分计算(解析...

Spark SQL(一)简介

Spark SQL Introduction

一. Spark SQL概述 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用 Spark SQL特点 Integrated Seamlessly mix SQL queries with Spark program Uniform Dat...

Spark(四)Job物理执行图

Spark Logical Plan

一. 如何划分物理执行图 上一篇博客介绍的逻辑执行图表示的是数据上的依赖,不是task的执行图。在Hadoop中,整个数据流是固定的,用户只需要填充map和reduce函数即可。Spark面对的事更复杂的数据处理流程,数据依赖更加灵活,很难将数据流和物理task简单地统一在一起。因此,Spark将数据流和具体task的执行流程分开,并设计算法将逻辑执行图转换为task物理执行图 给定一个数...

Spark(三)Job逻辑执行过程

Spark Logical Plan

一. WordCount Job逻辑执行过程 下图以WordCount为例:sc.textFile(...).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _, 2).collect 在写 Spark 程序时,头脑中会生成如下的 Job 逻辑执行图。实际代码中,生成的 RDD 数量远不止这些,例如再执行 reduceByKey ...

Spark(二)四种任务提交方式

Submit Application

一. Standalone-client模式 提交命令 ./spark-submit --master spark://hadoop1:7077 --deploy-mode client --class ... jar ... 参数 流程 首先Worker会向Master注册(注册时会汇报资源)并定时发送心跳 Dri...

Spark(一)Spark RDD

Spark RDD

一. RDD简介 What is Spark RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可以并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性 RDD的属性 Internally, each RDD is characterized by...

Spark集群安装及任务提交

Spark Installtion

一. 安装Spark集群 IP地址 主机名 角色 10.211.55.7 hadoop1 Master 10.211.55.9 hadoop2 Worker 10.211.55.11...

MapReduce源码分析(三)Shuffle阶段

Source Code of MR Shuffle

一. shuffle阶段执行过程 shuffle是MapReduce处理流程中的一个过程,大致分为如下过程 maptask收集map方法输出的k,v对,放入内存缓冲区中 在内存缓冲区中不断溢出本地磁盘文件 多个溢出的文件会被合并成大的溢出文件 在溢出过程中,及合并的过程中,都要调用partitioner进行分组和针对key进...

MapReduce源码分析(二)MapTask执行过程

Source Code of Running MapTask

一. MapTask执行图 MapTask完成的任务大致如下: 利用客户指定的inputformat来获取RecordReader读取数据,形成输入KV对 将输入KV对传递给客户定义的map()方法,做逻辑运算,并将map()方法输出的KV对收集到缓存 将缓存中的KV对按照K分区排序后不断溢写到磁盘文件 二. MapTask源码分析 MapTask的run方法是执行...