spark
文章平均质量分 59
WQ同学
这个作者很懒,什么都没留下…
展开
-
Spark五种 Join 方式
在Spark 种 有2种 数据分发方式分别是 Hash Shuffle,和BroadCast。在Spark 种 有3种 join 方式 分别是 SoftMergeJoin, HashJoin,Nested Loop Join 。所以一共5种join 方式(没有 BroadCast SoftMergeJoin)为什么没有它呢相比 SMJ,HJ 并不要求参与 Join 的两张表有序,也不需要维护两个游标来判断当前的记录位置,只要基表在 Build 阶段构建的哈希表可以放进内存,HJ 算法就可以在 Pro原创 2021-08-02 22:20:27 · 7157 阅读 · 1 评论 -
spark 集群安装
文章地址:http://www.haha174.top/article/details/253943 首先需要安装jdk 不会可以参考这里(http://www.haha174.top/article/details/259178) 安装scala(懒得写了 不会的话 自行百度) 安装 hadoop(http://www.haha174.top/article/details/258原创 2018-01-21 22:42:21 · 3029 阅读 · 0 评论 -
spark从入门到放弃一: worldcount-java
文章地址:http://www.haha174.top/article/details/253584 项目源码:https://github.com/haha174/spark.git 开启spark 从入门到放弃/笑哭。下面不多说来写一个hello world 压压惊。 之前搭建集群用的是 spark 2.2 hadoop 2.9 所以开发的需要引入如下的依赖 <p...原创 2018-01-30 21:03:20 · 4295 阅读 · 5 评论 -
spark从入门到放弃三: worldcount-scala
文章地址:http://www.haha174.top/article/details/255855 项目源码:https://github.com/haha174/spark.git 1.安装scala 2. 安装idea scala 插件object SparkOnFile { def main(args: Array[String]) { val sparkC...原创 2018-02-01 22:59:35 · 3002 阅读 · 0 评论 -
spark从入门到放弃二: worldcount-java submit
文章地址:http://www.haha174.top/article/details/254362 项目源码:https://github.com/haha174/spark.git 提交到spark 集群上面去运行 与本地有点不同/*** 如果提交集群只需要修改两个地方* 第一删除setMaster* 第二 hadf 上面的文件*/ SparkCo...原创 2018-01-31 21:21:41 · 3053 阅读 · 0 评论 -
spark从入门到放弃五:spark Action Operation
文章地址:http://www.haha174.top/article/details/257684 项目源码:https://github.com/haha174/spark.git spark action 主要有如下操作: reduce(); collect(); count();take(); saveAsTextFile(); countByKey(); fore...原创 2018-03-07 23:33:34 · 3088 阅读 · 0 评论 -
spark从入门到放弃四: worldcount-scala submit
文章地址:http://www.haha174.top/article/details/252432 项目源码:https://github.com/haha174/spark.git 提交到spark 集群上面去运行 与本地有点不同/*** 如果提交集群只需要修改两个地方* 第一删除setMaster* 第二 hadf 上面的文件*/ val sparkConf =...原创 2018-03-07 23:54:06 · 2947 阅读 · 0 评论 -
spark从入门到放弃六: RDD 持久化原理
文章地址:http://www.haha174.top/article/details/252484 spark 中一个非常重要的功能特性就是可以将RDD 持久化到内存中。当对RDD进行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且之后对该RDD的反复使用直接使用内存缓存的partion.这样的话针对一个RDD反复执行多个操作的场景就只要对RDD计算一次即...原创 2018-03-09 00:05:57 · 5463 阅读 · 1 评论 -
spark从入门到放弃九: 二次排序
文章地址:http://www.haha174.top/article/details/254163 项目源码:https://github.com/haha174/spark.git 假设 现在有一个文件里面有一组数据 1 5 2 4 3 6 1 3 2 1 实现一个需求。先按照第一列排序如果第一列相同按照第二列排序。 1.自定义二次排序的key 要实现 Ordered ...原创 2018-03-17 16:32:45 · 3000 阅读 · 0 评论 -
spark从入门到放弃十: top N
文章地址:http://www.haha174.top/article/details/255827 项目源码:https://github.com/haha174/spark.git 这篇主要通过两个例子介绍一下top N.1.对文本文件内的数字,取最大的前3个。下面给出一个top文本 3 5 6 7 1 4 5 6 9 0 3 下面对这个文本取出最大的前三...原创 2018-03-17 20:31:26 · 3779 阅读 · 1 评论 -
spark从入门到放弃十一: 内核架构深度剖析之执行流程
文章地址:http://www.haha174.top/article/details/251403 前10篇主要介绍到了spark action,算子等一些简答的demo 操作。那么那些操作是怎么在spark 中运行的呢。下面将进行逐步的介绍。图解:说明:1.首先会将编写的程序jar包上传到有spark 客户端的机器上通过spark-submit提交到集群上面取运行。...原创 2018-03-18 13:16:26 · 2974 阅读 · 0 评论 -
spark从入门到放弃十二: 深度剖析宽依赖与窄依赖
文章地址:http://www.haha174.top/article/details/256658 根据hello world 的例子介绍一个什么是宽依赖和窄依赖。 窄依赖:英文全名,Narrow Dependence.什么样的情况,叫做窄依赖呢?一个RDD对他的父RDD只有简单的1对1的依赖关系。也即是说。RDD的每个partition.仅仅依赖于父RDD中的一个partition。...原创 2018-03-18 14:17:46 · 2983 阅读 · 0 评论 -
spark从入门到放弃十三:spark 三种提交模式
文章地址:http://www.haha174.top/article/details/257573 一.Standalone 模式基于spark自己的 Master-Worker 集群。 就是之前的 spark-submit 提交的方式这里不再详细叙述。如果不清楚可以看这篇文章 如果要切换成第二种,第三种模式。将之前的submit脚本添加上–master 参数 设置为yar...原创 2018-03-18 17:37:11 · 5026 阅读 · 0 评论 -
spark从入门到放弃十四:SparkContext原理剖析
文章地址:http://www.haha174.top/article/details/257766 1.TaskScheduler createTaskScheduler .这里会做三件事情。 1.1 创建TaskSchedulerImpl 他其实就是TaskScheduler(后面在做详细的分析) TaskSchedulerImpl 底层主要基于SparkDep...原创 2018-03-18 18:24:27 · 3166 阅读 · 0 评论 -
spark从入门到放弃十五:master 主备切换
文章地址:http://www.haha174.top/article/details/254300 Master实际上可以配置两个,那么Spark原生的standalone模式是支持Master主备切换的。也就是说,当Active Master节点挂掉时,可以将StandBy master节点切换为Active Master。 Spark Master主备切换可以基于两种机制,一种是...原创 2018-03-18 19:10:22 · 3570 阅读 · 0 评论 -
spark从入门到放弃七: 共享变量
文章地址:http://www.haha174.top/article/details/257359 项目源码:https://github.com/haha174/spark.git spark 一个非常重要的特性就是共享变量,默认情况下如果一个算子函数中使用到了某个外部的变量,那么这个变量的值会被拷贝到每个task 中,此时每个task 只能操作自己那份变量副本。如果多个task 想...原创 2018-03-13 08:05:47 · 3012 阅读 · 0 评论 -
spark从入门到放弃十六:master 注册机制
文章地址:http://www.haha174.top/article/details/258040 本文主要介绍一下master 的注册流程。 1 worker. 当worker 启动之后,就会主动的向master 进行注册。master 接收到worker 的注册请求之后,会将状态为DEAD的worker 过滤掉。对于状态为UNKNOWN的worker 节点清理掉worker...原创 2018-03-19 22:14:24 · 2886 阅读 · 0 评论 -
spark从入门到放弃十七:master 状态转化
文章地址:http://www.haha174.top/article/details/251642 在Master.scala源码下进行模式匹配,匹配到DriverStateChanged,如果driver的状态是错误,完成,被杀掉,失败,那么就移除driver。在removeDriver方法中,用scala的find高阶函数去找到driverId对应的driver,如果找到了,Some样...转载 2018-03-19 22:28:05 · 2797 阅读 · 0 评论 -
spark从入门到放弃八: 基于排序的worldcount
项目源码:http://www.haha174.top/article/details/252203 文章地址:https://github.com/haha174/spark.git world前面已经介绍过了那么来介绍一个稍微那么高级一丢丢的基于排序的worldcount。 其实就是在worldcount 的基础上增加了一个 key-value 反转。和排序 下面给出java 示例...原创 2018-03-13 22:22:07 · 3115 阅读 · 0 评论 -
spark从入门到放弃十八:Spark 性能优化(1)诊断内存消耗
文章地址:http://www.haha174.top/article/details/255038一.首先程序在运行的时候 内存都花费在那里呢?1.每个java对象,都有一个对象头,会占用16个字符。主要是包括了一些对象的元信息,比如执指向他的类指针。如果一个对象本身很小,不如就包括了一个int类型的field,那么它的对象头实际上比对象自己还要大。 2.java String 对象,...原创 2018-03-25 12:49:41 · 3376 阅读 · 0 评论 -
spark从入门到放弃二十:Spark 性能优化(3)优化数据结构
文章地址:http://www.haha174.top/article/details/258576 要较少内存的消耗,除了使用高效的序列化库之外还有一个很重要的事情,就是优化数据结构。从而避免java语法特性中所导致的额外的内存开销,比如基于指针的java的数据结构以及包装类型。 那么如何优化数据结构呢 1优先使用数组以及字符串,而不是集合类。也就是说优先用array,而不是ArrarL...原创 2018-03-25 16:17:36 · 2885 阅读 · 1 评论 -
spark从入门到放弃二十一:Spark 性能优化(4)对多次使用的RDD进行持久化或者checkpoint
文章地址:http://www.haha174.top/article/details/254892 如图在这里可以很清楚的看到对一个RDD前后进行了两次操作。在第一次的时候先计算出一个RDD然后计算出第二个RDD继续往后计算。 但是对第二次RDD操作在执行的时候,由于RDD数据在执行完成之后很有可能会被立即丢弃那么这个时候就需要重新计算第一个和第二个RDD了我们可以把第二个RDD的计...原创 2018-03-25 16:52:06 · 3434 阅读 · 0 评论 -
spark从入门到放弃二十二:Spark 性能优化(5)java 虚拟机垃圾回收调优
文章地址:http://www.haha174.top/article/details/259787背景如果在持久化RDD的时候持久化了大量的数据那么java 虚拟机在垃圾回收的时候就可能成为一个性能瓶颈。因为java虚拟机会定期的进行垃圾回收,此时会最总所有的java对象并且在垃圾回收时找到些不在使用的对象进行回收。 垃圾回收的性能开销,是根内存中对象的数量成正比的所以对于垃圾回收的性...原创 2018-03-25 18:49:04 · 3522 阅读 · 0 评论 -
spark从入门到放弃二十三:Spark 性能优化(6)提高并行度
文章地址:http://www.haha174.top/article/details/258063 在实际开发中,spark集群的资源不一定会被充分的利用到,所以尽量设置合理的并行度来充分的利用集群的资源。才能充分提高spark应用程序的性能。 spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如hdfs就会给每一个block创建一个partition,也依据这个设置并行度...原创 2018-03-25 19:17:13 · 2892 阅读 · 0 评论 -
spark从入门到放弃二十八:Spark Sql (1)Data Set
文章地址:http://www.haha174.top/article/details/257834 项目源码:https://github.com/haha174/spark.git1.简介Spark Sql 是Spark 中的一个模块,主要是用于进行结构化数据处理。它提供的最核心的编程抽象,就是DataFrame。同时Spark Sql 还可以作为分布式sql 查询引擎。Sapr...原创 2018-03-31 18:34:45 · 3740 阅读 · 0 评论 -
spark从入门到放弃二十九:Spark Sql (2)Data Set与RDD进行转换
文章地址:http://www.haha174.top/article/details/253510 项目源码:https://github.com/haha174/spark.git1.简介为什么要把RDD转换成DataSet呢因为那样的话,我们就可以直接针对于HDFS等任何可以构建为RDD的数据,使用sparkSql进行查询操作了。这个功能是无比强大的。想象一下针对与HDFS的数据直...原创 2018-04-01 10:23:47 · 3609 阅读 · 0 评论 -
spark从入门到放弃二十四:Spark 性能优化(7)广播共享变量
文章地址:http://www.haha174.top/article/details/254421假设现在有一个配置文件很大又100M.默认的情况下算子函数使用到的外部的数据,会拷贝到每一个task中,此时如果使用到的外部的数据很大的话,那么岂不是在各个节点都会占用大量的内存!而且会产生大量的网络传输,大量的网络通信造成性能的开销。 这种情况下就应该对外部大数据进行Broatcast 广播...原创 2018-03-25 22:16:28 · 2795 阅读 · 0 评论 -
spark从入门到放弃三十一:Spark Sql (4)数据源Parquet
文章地址:http://www.haha174.top/article/details/253452 项目源码:https://github.com/haha174/spark.git1.简介parquet 是面向分析型业务的列示存储格式. 列式存储比行式存储有哪些优势呢 1.可以跳过不符合条件的数据,只读取需要的数据,降低IO的数量。 2.压缩编码格式可以降低磁盘空间。由于同...原创 2018-04-01 16:31:55 · 3192 阅读 · 1 评论 -
spark从入门到放弃二十五:Spark 性能优化(8)数据本地化
文章地址:http://www.haha174.top/article/details/255830 数据本地化对于spark job 性能 有着巨大的影响,如果数据以及要计算它的代码是在一起的那么性能会相当的高。但是如果数据和代码是分开的,那么其中之一必须到另外一方的机器上。通常来说移动代码到其他的节点,会比移动数据到其他的节点的速度要快的多,因为代码较小。spark也正是基于这个数据本地化的...原创 2018-03-26 21:08:06 · 2930 阅读 · 0 评论 -
spark从入门到放弃二十六:Spark 性能优化(9)reduceByKey和groupByKey
文章地址:http://www.haha174.top/article/details/259354 举个例子val counts=pairs.reduceByKey(_+_)val counts=pairs.groupByKey().map(wordcounts=>(wordcounts._1,wordcounts_2.sum))如果能用reduceByKey那就用reduce...原创 2018-03-26 21:42:08 · 3960 阅读 · 0 评论 -
spark从入门到放弃二十七:Spark 性能优化(10)shuffle 性能优化
文章地址:http://www.haha174.top/article/details/2512201 consolidationnew SparkConf().set(“spark.shuffle.consolidateFiles”,”true”) 是否开启shuffle block file 的合并 默认false 没有开启consolidation 机制的时候,shuffl...原创 2018-03-26 23:38:14 · 2974 阅读 · 0 评论 -
spark从入门到放弃三十四:Spark Sql(7) JDBC
文章地址:http://www.haha174.top/article/details/2557791.简述Spark Sql 支持使用jdbc 从关系型数据库读取数据(比如mysql ),读取的数据依然用DataSet 表示,很方便地使用Spark core 提供的各种算子进行处理。 这里有一个经验之谈,实际上用Spark Sql 处理JDBC 的数据是非常有用的。比如说...原创 2018-04-22 07:13:38 · 2941 阅读 · 0 评论 -
spark从入门到放弃三十五:Spark Sql(8)根据日志统计用户UV
文章地址:http://www.haha174.top/article/details/252965 在实际的工作中,根据用户的行为日志进行统计分析是一件很常见的事情,下面给出一个小例子,根据用户的行为日志分析用户访问次数。object DailyUV { def main(args: Array[String]): Unit = { val conf=new SparkConf...原创 2018-04-22 10:01:43 · 3568 阅读 · 0 评论 -
spark从入门到放弃三十六:Spark Sql(9)根据日志统计用户销售额
文章地址:http://www.haha174.top/article/details/255625 主要实现三个功能 1.统计用户的销售额 2.统计每日的销售额 2.统计每个用户每日的销售额object DailySale { def main(args: Array[String]): Unit = { val conf=new SparkConf().setAppNa...原创 2018-04-22 10:16:32 · 3440 阅读 · 0 评论 -
spark从入门到放弃三十七:Spark Sql(10)自定义sql函数
文章地址:http://www.haha174.top/article/details/257703 自定义 SparkSql 的函数 下面给出一个示例 注册一个 ‘strLen’的函数 求某个字段的长度 sqlContext.udf.register(&quot;strLen&quot;,(str:String)=&amp;gt;str.length)如下的方式使用即可 val names...原创 2018-04-22 13:43:56 · 2944 阅读 · 0 评论 -
spark从入门到放弃三十八:Spark Sql(11)自定义sql函数进阶
文章地址:http://www.haha174.top/article/details/255951 本文针对上一篇博客介绍一个聚合函数的例子巩固一下sql 定义函数。 首先需要定义一个聚合函数class StringCount extends UserDefinedAggregateFunction{ //输入数据的类型 override def inputSchema: Str...原创 2018-04-22 14:42:34 · 2837 阅读 · 0 评论 -
spark从入门到放弃三十九:Spark Sql(12)SparkSql工作原理以及性能优化
文章地址:http://www.haha174.top/article/details/2570731工作原理1.大家都知道,只要在数据库类型的技术里面,比如,最传统的mysql,Oracle包括现在大数据领域的数据仓库如Hive ,他的基本Sql 执行的模型,都是类似的,首先生成一条SQL 语句的执行计划。例如Select name from names =&gt; 解析成从哪里去查...原创 2018-04-22 16:22:21 · 3199 阅读 · 0 评论 -
spark从入门到放弃四十:hive on spark
知识背景(1)hive 是目前大数据领域,事实上的sql 标准。其底层默认是基于MapReduce实现的,但是由于MapReduce速度不够快。因此近几年,陆续出来了新的Sql 查询引擎。包括Spark Sql ,hive on tez ,hive on spark. Spark Sql 和hive on spark 是不一样的。spark sql 是Spark 自...原创 2018-04-22 17:11:05 · 4785 阅读 · 0 评论 -
spark从入门到放弃四十一:Spark Streaming(1) 简介
文章地址:http://www.haha174.top/article/details/2519951.大数据实时计算介绍1.Spark Streaming 其实就是一种spark 提供的对于大数据进行实时计算的一种框架,他的底层其实也是之前提到的spark core 基本的计算模型,还是基于内存的大数据实时计算模型。而且他的底层的组件或者叫做概念其实最核心的还是RDD.只不过,针...原创 2018-04-23 22:45:48 · 2897 阅读 · 0 评论 -
spark从入门到放弃四十二:Spark Streaming(2) 工作原理
文章地址:http://www.haha174.top/article/details/2564731.Spark Stream 简介Spark Stream是spark core Api 的一种扩展,他可以用于大规模,高吞吐量,容错的实时数据流处理。它支持从多种数据源读取数据,比如kafka ,flume,ZeroMQ 等等并且能够使用类似高阶函数的复杂算法来进行数据处理,比如ma...原创 2018-04-23 23:46:52 · 3701 阅读 · 0 评论