Spark
文章平均质量分 50
小东升职记
人生陆远只有忘的甘静才会有江莱。
展开
-
Spark,Hadoop,Hive
不同的业务场景决定了不同的系统架构选型。Hadoop 用于分布式存储和 Map-Reduce 计算,Spark 用于分布式机器学习,Hive 则是分布式数据库。Hive 和 Spark 是大数据领域内为不同目的而构建的不同产品。二者都有不可替代的优势。Hive 是一个基于Hadoop 的分布式数据库,Spark 则是一个用于数据分析的框架。学习 Spark ,从大方向说,算子大致可以分为以下两类:(1)Transformation 变换 / 转换算子:这种变换并不触发提交作业,这种算子是延迟执行的,原创 2020-09-08 10:31:43 · 349 阅读 · 1 评论 -
Spark内核分析之BlockManager工作原理介绍
在DAGShceduler中有一个BlockManagerMaster对象,该对象的工作就是负责管理全局所有BlockManager的元数据,当集群中有BlockManager注册完成的时候,其会向BlockManagerMaster发送自己元数据信息;BlockManagerMaster会为BlockManager创建一个属于这个BlockManager的BlockManagerInfo,用于存放BlockManager的信息。简单介绍一下BlockManager主要的几个组件;Di...转载 2020-08-10 10:18:54 · 217 阅读 · 0 评论 -
Spark Kafka 基于Direct自己管理offset
1、SparkStreaming中使用Kafka的createDirectStream自己管理offset在Spark Streaming中,目前官方推荐的方式是createDirectStream方式,但是这种方式就需要我们自己去管理offset。目前的资料大部分是通过scala来实现的,并且实现套路都是一样的,我自己根据scala的实现改成了Java的方式,后面又相应的实现。Direct Approach 更符合Spark的思维。我们知道,RDD的概念是一个不变的,分区的数据集合。我们将kafka转载 2020-08-04 10:09:10 · 365 阅读 · 0 评论 -
spark Hash Shuffle内幕彻底解密
本博文的主要内容: 1、HashShuffle彻底解密 2、ShufflePluggable解密 3、SortedShuffle解密 4、Shuffle性能优化一:到底什么是Shuffle? Shuffle中文翻译为“洗牌”,需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算。二:Shuffle可能面临的问题? 运行Task的时候才会产生Shuffle(Shuffle已经融化在Spark的算子中了)。 ...转载 2020-07-28 17:25:15 · 330 阅读 · 0 评论 -
Spark Executor内存管理
我们都知道 Spark 能够有效的利用内存并进行分布式计算,其内存管理模块在整个系统中扮演着非常重要的角色。为了更好地利用 Spark,深入地理解其内存管理模型具有非常重要的意义,这有助于我们对 Spark 进行更好的调优;在出现各种内存问题时,能够摸清头脑,找到哪块内存区域出现问题。首先我们知道在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转.转载 2020-07-09 17:52:34 · 350 阅读 · 0 评论 -
Apache Spark 统一内存管理模型详解
本文将对 Spark 的内存管理模型进行分析,下面的分析全部是基于 Apache Spark 2.2.1 进行的。为了让下面的文章看起来不枯燥,我不打算贴出代码层面的东西。文章仅对统一内存管理模块(UnifiedMemoryManager)进行分析,如对之前的静态内存管理感兴趣,请参阅网上其他文章。我们都知道 Spark 能够有效的利用内存并进行分布式计算,其内存管理模块在整个系统中扮演着非常重要的角色。为了更好地利用 Spark,深入地理解其内存管理模型具有非常重要的意义,这有助于我们对 Spark转载 2020-07-07 11:50:54 · 148 阅读 · 0 评论 -
Apache Spark 内存管理详解
Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和 Java 基础,了解 RDD、Shuffle、JVM 等相关概念。在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Exe转载 2020-07-05 22:13:35 · 149 阅读 · 0 评论 -
Spark Streaming官方编程指南
OverviewSpark Streaming(下称streaming)是Spark core的拓展,一个易扩展、高吞吐、高容错的流式数据处理系统。streaming-archstreaming接收输入数据(kafka等)然后根据设置的处理时长batch interval将其切割为一个个的小数据集,然后对小数据集进行spark core/sql/mllib的操作,最后将处理后的小数据集输出。streaming-flowstreaming具有一个高度抽象概念叫离散化的流(...转载 2020-06-10 17:47:53 · 183 阅读 · 0 评论 -
SparkSQL内核解析之逻辑计划
SparkSQL逻辑计划概述逻辑计划阶段被定义为LogicalPlan类,主要有三个阶段: 由SparkSqlParser中的AstBuilder将语法树的各个节点转换为对应LogicalPlan节点,组成未解析的逻辑算子树,不包含数据信息与列信息 由Analyzer将一系列规则作用在未解析逻辑算子树上,生成解析后的逻辑算子树 有Optimizer将一系列优化规则应用在逻辑算子树中,确保结果正确的前提下改进低效结构,生成优化后的逻辑算子树 LogicalPlan简介转载 2020-06-02 23:01:33 · 659 阅读 · 0 评论 -
spark RDD处理数据集
package com.hicore.exerciseimport org.apache.log4j.{Level, Logger}import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.SparkSession/** * @author https://blog.csdn.net/qq_38704184 * @package * @date 2020.转载 2020-05-13 17:50:10 · 316 阅读 · 0 评论 -
spark2.x-内存管理机制
https://blog.csdn.net/qq_16038125/article/details/80359414原创 2020-05-13 17:06:57 · 149 阅读 · 0 评论 -
sparkStreaming 实现kafka offset自定义保存
KafkaUtils.createDirectStream区别Receiver接收数据,这种方式定期地从kafka的topic+partition中查询最新的偏移量,再根据偏移量范围在每个batch里面处理数据,使用的是kafka的简单消费者api优点:A、 简化并行,不需要多个kafka输入流,该方法将会创建和kafka分区一样的rdd个数,而且会从kafka并行读取。B、高效,...原创 2019-11-25 13:34:51 · 713 阅读 · 1 评论 -
spark源码解析
生产环境客户端提交spark程序,基于脚本提交的spark-submitspark.version:2.4.0scala.version:2.12源码解析:spark-submit: --main() #InProcessSparkSubmit (new SparkSubmit()).doSubmit(args) doSubm...原创 2019-10-17 14:56:29 · 174 阅读 · 0 评论 -
SparkStreaming foreachPartition实现输出数据到MYSQL
import java.sql.DriverManagerimport org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}object foreachTOMysql { def writeToMysql()={ val conf = new Spar...原创 2019-07-03 16:21:33 · 804 阅读 · 1 评论 -
spark读写hbase性能对比
https://blog.csdn.net/baymax_007/article/details/82191188转载 2019-06-05 16:08:34 · 802 阅读 · 0 评论 -
Spark高级算子
map是对每一个元素操作;mapPartitions是对其中的每个partition操作;mapPartitionsWithIndex:把每个partition中的分区号和对应的值拿出来,看源码:def mapPartitionsWithIndex[U](f : scala.Function2[scala.Int, scala.Iterator[T], scala.Ite...原创 2019-01-10 20:44:17 · 514 阅读 · 0 评论 -
基于Spark下WordCount的Demo
import org.apache.spark.{SparkConf, SparkContext}object WordCount { def main(args: Array[String]): Unit = { /** * 创建SparkConf()并设置App名称 * local指本地 * 2代表在本地起两个线程 */ ...原创 2019-01-11 20:06:54 · 304 阅读 · 0 评论 -
基于Spark下基站与手机号连接时间判定机主住地
本demo全属于模拟本demo所需的数据链接:链接: https://pan.baidu.com/s/1KwBctUxE5AxfEBmiZfBmzQ 提取码: n3ft import org.apache.spark.{SparkConf, SparkContext}object NetAndHome { def main(args: Array[String]): Unit...原创 2019-01-11 20:22:09 · 375 阅读 · 0 评论 -
基于Spark下自定义排序Demo
import org.apache.spark.{SparkConf, SparkContext}object CustomSort { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("CustomSort").setMaster("local[2]") val ...原创 2019-01-11 20:27:38 · 157 阅读 · 0 评论 -
基于Spark下的自定义分区Demo
本demo所需的数据源:链接: https://pan.baidu.com/s/1VEluh5B3HnodZFyoOZ9Zg 提取码: enmq import java.net.URLimport org.apache.spark.{Partitioner, SparkConf, SparkContext}import scala.collection.mutableobje...原创 2019-01-11 20:37:18 · 189 阅读 · 0 评论 -
基于Spark下的查询数据库中信息Demo
import java.sql.DriverManagerimport org.apache.spark.rdd.JdbcRDDimport org.apache.spark.{SparkConf, SparkContext}object JDBCRDDDemo extends App { val conf = new SparkConf().setAppName("JDBCRDD...原创 2019-01-11 20:40:32 · 395 阅读 · 0 评论 -
基于Spark下查询ip详细信息Demo
本demo全是模拟现实的案例所需的数据源文件链接: https://pan.baidu.com/s/1dd4AeNv4SiEToE81P6PPfA 提取码: 4qqi import java.io.{BufferedReader, FileInputStream, InputStreamReader}import scala.collection.mutable.ArrayBuffe...原创 2019-01-11 21:43:14 · 369 阅读 · 0 评论 -
一套完整的webserver+Flume+kafka+storm整合方案
实时处理系统:(Flume+Kafka+Storm+hbase+mysql) 为什么要记录访问日志的行为?通过日志我们可以得到网站页面上的访问量,网站的黏性,推荐用户行为分析,是指在获得网站访问量基本数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站的归类,并将这些规律与网络营销策略等相结合,从而发现目前网络营销活动中可能存在的问题,并为进一步修正或重新制定网络营...原创 2019-01-17 20:28:09 · 445 阅读 · 0 评论 -
Spark整合Hive
通过hive来创建一定格式的表,将相应的数据上传到hdfs相应的hive目录下,实现用spark的SQL风格进行读取里面的数据Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以有SparkSql的应用而生,他是将sparksql转换成RDD,然后提交到集群执行,执行效率非常快!...原创 2019-01-14 20:17:27 · 1470 阅读 · 0 评论 -
SparkStreaming整合Kafka
<properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <encoding>UTF-8</en...原创 2019-01-15 20:50:24 · 314 阅读 · 0 评论 -
基于SparkStreaming的Window Operations
Window Operations有点类似于Storm中的State,可以设置窗口的大小和滑动窗口的间隔来动态的获取当前Steaming的允许状态import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Milliseconds, Seconds, StreamingContext}object Wind...原创 2019-01-15 21:35:56 · 265 阅读 · 0 评论 -
解决spark中遇到的数据倾斜问题
一. 数据倾斜的现象多数task执行速度较快,少数task执行时间非常长,或者等待很长时间后提示你内存不足,执行失败。二. 数据倾斜的原因常见于各种shuffle操作,例如reduceByKey,groupByKey,join等操作。数据问题key本身分布不均匀(包括大量的key为空) key的设置不合理spark使用问题shuffle时的并发度不够 计算方式有误三...转载 2019-02-20 17:44:10 · 1369 阅读 · 1 评论 -
Spark读写Hbase的二种方式对比
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处转载 2019-06-05 16:07:55 · 203 阅读 · 0 评论 -
Spark低级算子
什么是RDD?RDD(Rdeilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显示地将工作集缓存在内存中,后续的查询能够重用工作集,这极大的提升了查询速度。RDD的属性(源码注释)一组...原创 2019-01-10 19:48:33 · 153 阅读 · 0 评论