Spark
Spark 相关实践经验
疯狂呼呼呼
小鸟也有梦想
展开
-
Spark 2.2源码编译 & 支持hadoop-2.6.0-cdh5.7.0
JDK & Maven & Scala & Git软件安装 & 前置准备Spark 2.2.0源码的下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.2.0/spark-2.2.0.tgz编译Spark源码的文档(参考官方文档): http://spark.apache.org/docs/latest/building原创 2017-11-09 22:45:14 · 4128 阅读 · 0 评论 -
RDD的几种创建方式
Spark中RDD的几种创建方式,及在Spark核心编程过程中值得注意的几点原创 2017-09-10 17:21:47 · 21390 阅读 · 0 评论 -
Spark transformation算子案例
Spark支持两种RDD操作:transformation和action 在本文中,将对几个常用的transformation算子进行案例演示,采用Java和Scala两种语言对代码进行编写 其中,在Java版本中,将对transformation算子进行详细介绍transformation常用算子介绍原创 2017-09-09 00:29:28 · 885 阅读 · 0 评论 -
Spark action算子案例
在上篇文章中,我们对Spark中几种常用的transformation算子通过Java和Scala两种代码分别进行了案例演示,Spark transformation算子案例 而在本文中,我们将继续对Spark的另一种RDD操作action进行讲解。对常用的action算子,使用Java和Scala两种代码进行简单的案例演示。原创 2017-09-10 16:38:17 · 885 阅读 · 0 评论 -
Spark编程实战
在上述几篇的博文中,介绍了Spark的几种常用transformation算子和action算子的使用方法、RDD的创建 在本篇文章中,将带来Spark核心编程的几种经典案例二次排序案例需求及实现:Top N、分组取Top N以及二次排序;每个版本的实现都使用了Java和Scala两种版本原创 2017-09-22 15:50:16 · 876 阅读 · 0 评论 -
Spark RDD深入理解
通过RDDscala源码来解读什么是RDDResilient Distributed DatasetRDD通过RDDscala中的注释来解读RDD的概念RDD五大特性RDD五大特性在源码中的体现分析RDDscala分析JdbcRDDscala分析getPartitions方法分析compute方法图解RDD通过RDD.scala源码来解读什么是RDD...原创 2018-02-18 16:29:36 · 2556 阅读 · 0 评论 -
Spark累加器剖析(1) —— 介绍 & 重点类 & 源码解析
由于最近在项目中需要用到Spark的累加器,同时需要自己去自定义实现Spark的累加器,从而满足生产上的需求。对此,对Spark的累加器实现机制进行了追踪学习。 本系列文章,将从以下几个方面入手,对Spark累加器进行剖析:Spark累加器的基本概念累加器的重点类构成累加器的源码解析累加器的源码解析累加器使用中的坑自定义累加器的实现参考文章:累加器实现机制及自定义累加...原创 2018-07-28 01:15:33 · 3535 阅读 · 0 评论 -
Spark累加器剖析(2) —— 累加器执行的过程
Spark累加器系列文章: Spark累加器剖析(1) —— 介绍 & 重点类 & 源码解析综述Driver端 Driver端初始化构建Accumulator并初始化 同时完成了Accumulator注册:Accumulators.register(this) 同时Accumulator会在序列化后发送到Executor端Driver接收到ResultTas...原创 2018-07-29 17:30:19 · 4303 阅读 · 0 评论 -
Spark累加器剖析(3) —— 自定义累加器
Spark累加器系列文章: Spark累加器剖析(1) —— 介绍 & 重点类 & 源码解析 Spark累加器剖析(2) —— 累加器执行的过程思路 & 需求参考IntAccumulatorParam的实现思路(上述文章中有讲):trait AccumulatorParam[T] extends AccumulableParam[T, T] { de...原创 2018-08-04 10:04:04 · 2477 阅读 · 0 评论 -
Spark累加器剖析(4) —— 累加器使用过程中的坑
Spark累加器系列文章: Spark累加器剖析(1) —— 介绍 & 重点类 & 源码解析 Spark累加器剖析(2) —— 累加器执行的过程 Spark累加器剖析(3) —— 自定义累加器现象描述val acc = sc.accumulator(0, “Error Accumulator”)val data = sc.parallelize(1 to 10...原创 2018-08-15 01:10:09 · 2520 阅读 · 1 评论 -
Spark内存管理(1)—— 静态内存管理
Spark内存管理简介Spark从1.6开始引入了动态内存管理模式,即执行内存和存储内存之间可以相互抢占 Spark提供了2种内存分配模式:静态内存管理动态内存管理本系列文章将分别对这两种内存管理模式的优缺点以及设计原理进行分析(主要基于Spark 1.6.1的内存管理进行分析) 在本篇文章中,将先对静态内存管理进行介绍堆内内存在Spark最初采用的静态内存管理机制下...原创 2018-08-24 00:37:05 · 1684 阅读 · 0 评论 -
Spark内存管理(2)—— 统一内存管理
Spark内存管理系列文章: Spark内存管理简介(1)—— 静态内存管理堆内内存Spark 1.6之后引入的统一内存管理机制,与静态内存管理的区别在于Storage和Execution共享同一块内存空间,可以动态占用对方的空闲区域 其中最重要的优化在于动态占用机制,其规则如下:设定基本的Storage内存和Execution内存区域(spark.storage.stora...原创 2018-08-25 01:10:26 · 1633 阅读 · 0 评论 -
Spark内存管理(3)—— 统一内存管理设计理念
Spark内存管理系列文章: Spark内存管理(1)—— 静态内存管理 Spark内存管理(2)—— 统一内存管理在本文中,将会对各个内存的分布以及设计原理进行详细的阐述 相对于静态内存模型(即Storage和Execution相互隔离、彼此不可拆借),动态内存实现了存储和计算内存的动态拆借:也就是说,当计算内存超了,它会从空闲的存储内存中借一部分内存使用存储内存不够用的时候,...原创 2018-08-26 11:59:18 · 1490 阅读 · 0 评论 -
Spark内存管理(4)—— UnifiedMemoryManager分析
Spark内存管理系列文章: Spark内存管理(1)—— 静态内存管理 Spark内存管理(2)—— 统一内存管理 Spark内存管理(3)—— 统一内存管理设计理念acquireExecutionMemory方法关注UnifiedMemoryManager中的accquireExecutionMemory方法: 当前的任务尝试从executor中获取numBytes这...原创 2018-09-12 12:30:29 · 1414 阅读 · 0 评论 -
Spark SQL介绍 & 特点 & 架构 & SQL on Hadoop介绍
Spark SQL简单介绍 & 为什么需要SQL切记:Spark不止是单单写SQL那么简单!为什么需要SQL? 这是对数据统计分析的一种标准 关系型数据库,存储的数据量是有限制的: [1] 将庞大的数据量使用关系型数据库进行存储,之后进行统计分析 是有一定的难度的 [2] 三大运营商的BI系统,原来都是基于DB2来做的,但是随着量的越来越大,他们肯定要做类似的升级 ==...原创 2018-03-07 14:23:31 · 2781 阅读 · 0 评论 -
DataFrame的由来 & 官网解读 & 几个重要的点
本篇文章将介绍Spark SQL中的DataFrame,关于DataFrame与RDD的区别,可以参见这篇博客:DataFrame与RDD的区别DataFrame的由来DataFrame是Spark SQL里面非常核心的一个类,DataFrame这个词不是Spark SQL里有的,是从其它地方借鉴过来的:在 R语言里是有DataFrame这个概念的,但是R语言是单机处理的,也就是说对于...原创 2018-05-06 01:03:29 · 4312 阅读 · 0 评论 -
RDD转换成DataFrame的2种方式
关于DataFrame的介绍可以参考:DataFrame的由来 & 官网解读 & 几个重要的点、DataFrame与RDD的区别 在本篇文章中,将介绍Spark SQL中创建DataFrame的2种方式 参考官网:http://spark.apache.org/docs/latest/sql-programming-guide.html#interoperating-with-...原创 2018-05-13 00:25:15 · 25189 阅读 · 0 评论 -
DataFrame与RDD的区别
结合上图进行理解:RDD与DataFrame都是分布式的 可以并行处理的 一个集合但是DataFrame更像是一个二维表格,在这个二维表格里面,我们是知道每一列的名称 第一列是Name,它的类型是String 第二列是Age,它的类型是Int 第三列是Height,它的类型是Double 而对于DataFrame来说,它不仅可以知道里面的数据,而且它还可以知道里面的schema...原创 2018-03-31 00:38:24 · 11323 阅读 · 0 评论 -
Spark SQL External Data Source 产生背景 & 概述 & 目标 & 使用
产生背景Every Spark application starts with loading data and ends with saving dataLoading and saving Data is not easyParse raw data: text/json/parquetConvert data format transformationDatasets stor...原创 2018-05-19 19:10:03 · 2554 阅读 · 0 评论 -
Spark SQL整合Hive使用
Spark SQL整合Hive的使用步骤:将$HIVE_HOME/conf/hive-site.xml拷贝到$SPARK_HOME/conf下整合之后启动spark-shell: $>./spark-shell --master local[2]产生报错: java.net.ConnectException: Call From hadoop001/192.168.26.131 ...原创 2018-03-28 22:51:30 · 6294 阅读 · 0 评论 -
Spark SQL外部数据源综合使用(Hive和MySQL进行Join)
前置文章: Spark SQL External Data Source 产生背景 & 概述 & 目标 & 使用 Spark SQL整合Hive使用先在MySQL中创建数据库、表:mysql> create database spark;mysql> use spark;mysql> CREATE TABLE DEPT(DEPTNO i...原创 2018-06-06 12:41:21 · 2859 阅读 · 0 评论 -
Spark SQL指定特定的列转换为Json
需求 id name age school 1 qq 12 abc 2 ww 12 abc 3 ee 12 abc===> id name newCol 1 qq {“age”: “12”,”school”: “abc”} 2 ww {“age...原创 2018-04-09 23:07:14 · 8314 阅读 · 0 评论 -
Spark Streaming中状态算子的使用
流处理中状态的概念流处理中,有个状态(state)的概念:无状态的:当前批次处理完之后,数据只与当前批次有关有状态的:前后批次的数据处理完之后,之间是有关系的官网的介绍:http://spark.apache.org/docs/latest/streaming-programming-guide.html#updatestatebykey-operationupdateStateB...原创 2019-12-22 04:06:49 · 1106 阅读 · 1 评论 -
Spark Streaming中foreachRDD算子使用详解
前言foreachRDD算子会将DStream中的RDD里的数据给写到外部的系统中去;需要注意一点的是,这个函数将会被执行在driver进程当中,而从driver端到executor端必然会涉及到序列化的问题,在本篇文章中将进行详细介绍官网文档:http://spark.apache.org/docs/latest/streaming-programming-guide.html#design...原创 2019-12-29 15:50:31 · 1167 阅读 · 0 评论 -
Spark Streaming结合redis实现state的功能
前言在前面的文章中有介绍SparkStreaming中的updateStateByKey算子,具体可见文章:park Streaming中状态算子的使用,但是使用updateStateByKey算子会存在一个问题,就是必须使用checkpoint,同时造成小文件扎堆的情况而在这篇文章中SparkStreaming中foreachRDD算子使用详解所提到的写入mysql的最佳实践中,细看也不难...原创 2020-01-01 19:44:30 · 946 阅读 · 1 评论 -
Spark Streaming中transform算子使用详解
在实际生产中会有一种场景(最典型的就是黑名单的场景),就是需要DStream与RDD之间进行互相操作的,那么此时就需要我们借助transform算子来进行实现了官网介绍:http://spark.apache.org/docs/latest/streaming-programming-guide.html#transform-operation具体代码可见如下:/** * transfo...原创 2020-01-20 10:13:43 · 1631 阅读 · 0 评论 -
Spark Streaming与Kafka的整合
官网:http://spark.apache.org/docs/latest/streaming-kafka-integration.html从官网的介绍当中我们也可以发现,Spark Streaming有2种方式去接收kafka的数据:使用receiver去接收数据,同时使用的是kafka的high level api另外一种方式是没有使用receiver的,即direct方式,是从Sp...原创 2020-01-23 23:17:59 · 402 阅读 · 0 评论 -
Flume对接Spark Streaming的2种方式
只需要了解一下即可,Flume直接对接Spark Streaming是很少见的 官网:http://spark.apache.org/docs/latest/streaming-flume-integration.html 官网有详细的介绍,可以通过官网进行操作Approach 1: Flume-style Push-based Approach 基于Push的...原创 2018-03-10 23:52:18 · 3620 阅读 · 2 评论