
Spark
文章平均质量分 63
绿萝蔓蔓绕枝生
这个作者很懒,什么都没留下…
展开
-
Spark SQL 连接 hive
添加依赖: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope>原创 2021-09-29 15:37:20 · 452 阅读 · 0 评论 -
《Apache Spark 基础及架构》
目录一、认识 Spark1.1、Spark 特点1.1.1、快速1.1.2、易用1.1.3、通用1.1.4、多种运行模式1.2、Spark 与 MapReduce 比较1.2.1、易用性1.2.2、效率1.2.3、任务启动开销1.3、Spark 技术栈1.3.1、Spark Core1.3.2、Spark SQL1.3.3、Spark Streaming1.3.4、Spark GraphX1.3.5、Spark MLlib二、Spark环境部署2.1、Spark安装2.2、Standalone 模式2.2.原创 2021-01-06 19:33:18 · 1058 阅读 · 2 评论 -
GraphX之Connected Components算法
在Spark Graphx的org.apache.spark.graphx.lib包中有一些常用的图算法,其中一个就是Connected Components,本文将会介绍此算法的使用方法,下面是spark 1.6.3源码中对这个算法的注释:Compute the connected component membership of each vertex and return a graph with the vertex value containing the lowest vertex id in原创 2020-11-26 18:44:51 · 1129 阅读 · 0 评论 -
PageRank算法原理剖析及Spark实现
1.什么是PageRankPageRank对网页排名的算法,曾是Google发家致富的法宝。PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序2.简单PageRank算法首先,将Web做如下抽象:(1)将每个网页抽象成一个节点;(2)如果一个页面A有链接直接链向B,则存在一条有向边从A到B(多个相同链接不重复计算边)因此,整个Web被抽象为一张有向图。现在假设世界上只有四张网页:A、B、C、D,其抽象结构如下图:显然这个图是强连通的(从任一节点原创 2020-11-26 17:47:14 · 519 阅读 · 0 评论 -
Spark GraphX 中的 pregel 算法
pregel函数源码 与 各个参数介绍: def pregel[A: ClassTag]( initialMsg: A, maxIterations: Int = Int.MaxValue, activeDirection: EdgeDirection = EdgeDirection.Either)( vprog: (VertexId, VD, A) => VD, sendMsg: EdgeTriplet[VD, ED] => It原创 2020-11-26 16:31:16 · 262 阅读 · 0 评论 -
基于Spark GraphX的图形数据分析
一、图(Graph)的基本概念1、图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种网状数据结构通常表示为二元组:Gragh=(V,E)可以对事物之间的关系建模2、应用场景在地图应用中寻找最短路径社交网络关系网页间超链接关系二、图的术语1、顶点(Vertex)、边(Edge)Graph=(V,E)集合V={v1,v2,v3}集合E={(v1,v2),(v1,v3),(v2,v3)}如下图所示:2、有向图、无向图有向图G=(V,E)V={原创 2020-11-26 15:39:09 · 292 阅读 · 0 评论 -
Spark-SQL常用内置日期时间函数
Spark-SQL常用内置日期时间函数一、获取当前时间1、current_date获取当前日期时间格式:yyyy-MM-dd spark.sql("select current_date").show(false)结果显示:+--------------+|current_date()|+--------------+|2020-11-25 |+--------------+2、now()获取当前日期时间时间格式:yyyy-MM-dd HH:mm:ss.毫秒原创 2020-11-25 20:16:15 · 32967 阅读 · 2 评论 -
SQL 经典50题之mysql版、Spark-Sql版(详解)
SQL 50题建库create database schoolUSE `school`;建表//-- 课程表DROP TABLE IF EXISTS `Course`;CREATE TABLE `Course` ( `c_id` varchar(20) NOT NULL, `c_name` varchar(20) NOT NULL DEFAULT '', `t_id` varchar(20) NOT NULL, PRIMARY KEY (`c_id`)) ENGINE=In原创 2020-11-23 15:04:46 · 551 阅读 · 0 评论 -
JSON数据清理(详解)
二、JSON数据清洗1、JSON数据仅以两条数据为例1593136280858|{"cm":{"ln":"-55.0","sv":"V2.9.6","os":"8.0.4","g":"C6816QZ0@gmail.com","mid":"489","nw":"3G","l":"es","vc":"4","hw":"640*960","ar":"MX","uid":"489","t":"1593123253541","la":"5.2","md":"sumsung-18","vn":"1.3.4","b原创 2020-11-22 21:30:27 · 6174 阅读 · 1 评论 -
Spark之日志数据清洗及分析(详细解说)
一、日志数据清洗及分析1、数据清洗基本步骤:按照Tab切割数据过滤掉字段数量少于8个的数据按照第一列和第二列对数据进行去重过滤掉状态码非200的数据过滤掉event_time为空的数据将url按照&以及=切割保存数据:将数据写入mysql表中日志拆分字段:event_timeurlmethodstatussipuser_uipaction_prependaction_client如下是日志中的一条数据按照Tab分隔后的示例,每一行代表一个字段,分别以上一原创 2020-11-19 20:17:02 · 4452 阅读 · 0 评论 -
Spark中UDF、UDAF、UDTF的使用
一、UDF测试数据 user.json:{"id": 1001, "name": "foo", "sex": "man", "age": 20}{"id": 1002, "name": "bar", "sex": "man", "age": 24}{"id": 1003, "name": "baz", "sex": "man", "age": 18}{"id": 1004, "name": "foo1", "sex": "woman", "age": 17}{"id": 1005, "name"原创 2020-11-17 20:09:56 · 1162 阅读 · 0 评论 -
UDF、UDAF、UDTF之间的区别
1、UDF:用户定义(普通)函数,只对单行数值产生作用;继承UDF类,添加方法 evaluate() /** * @function 自定义UDF统计最小值 * */ public class Min extends UDF { public Double evaluate(Double a, Double b) { if (a == null) a = 0.0;转载 2020-11-16 18:42:52 · 4558 阅读 · 0 评论 -
Spark装载数据源、Spark读取Jar包执行Scala操作
一、装载CSV文件1、使用SparkContext val conf = new SparkConf().setAppName("CsvDemo").setMaster("local[*]") val sc = new SparkContext(conf) val lines = sc.textFile("in/users.csv") lines.foreach(println)读取显示效果如下:user_id,locale,birthyear,gender,join原创 2020-11-16 09:23:12 · 1026 阅读 · 0 评论 -
Spark性能优化指南 (很详细)
数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异原创 2020-11-13 11:48:46 · 374 阅读 · 0 评论 -
Spark RDD算子之分区操作 -- HashPartitioner、RangePartitioner、自定义分区
1、HashPartitioner使用pairRdd.partitionBy(new spark.HashPartitioner(n)),可以分为 n 个区Scala构建RDD分区查看方法 def mapPartIndexFunc(i1:Int,iter: Iterator[(Int,Int)]):Iterator[(Int,(Int,Int))]={ var res = List[(Int,(Int,Int))]() while(iter.hasNext){原创 2020-11-13 11:04:53 · 1171 阅读 · 0 评论 -
Spark分布式计算原理
Spark分布式计算原理一、RDD特征1、Lineage:血统、遗传2、依赖关系二、DAG(有向无环图)工作原理三、Spark Shuffle过程四、RDD持久化1、RDD缓存机制2、缓存策略3、缓存应用场景4、检查点五、RDD共享变量1、广播变量2、累加器六、RDD分区设计1、分区大小限制为2G2、分区太少3、分区过多4、经验5、数据倾斜一、RDD特征1、Lineage:血统、遗传RDD最重要的特性之一,保存了RDD的依赖关系RDD实现了基于Lineage的容错机制2、依赖关系宽依赖一个原创 2020-11-12 19:49:32 · 789 阅读 · 0 评论 -
Spark WordCount运行原理及其详细执行过程
Spark WordCount运行原理1、WordCount执行流程图2、Spark WordCount代码 //创建SparkContext val conf = new SparkConf().setAppName("WordCount").setMaster("local[*]") val sc = new SparkContext(conf) //读取文件内容,也可以直接读取本地文件 val lines = sc.textFile("hdfs://...")原创 2020-11-12 16:23:05 · 1614 阅读 · 0 评论 -
Spark之RDD算子总汇
以下是Spark常用RDD算子,其具体使用方法请点击查看1、Spark RDD算子之算子的创建``parallelize、makeRDD、textFile`2、Spark RDD算子之函数操作``filter、map、flatMap`3、Spark RDD算子之去重、合并``distinct、union、intersection、subtract、cartesian`4、Spark RDD算子之PairRDD的创建``mapToPair、flatMapToPair`5、Spark RDD算原创 2020-11-11 19:52:38 · 558 阅读 · 0 评论 -
Spark RDD算子之RDD 分区操作 -- mapPartitions、mapPartitionsWithIndex、glom
1、mapPartitions先 partition,再把每个 partition 进行 map 函数适用场景如果在映射的过程中需要频繁创建额外的对象,使用mapPartitions要比map高效的多。比如,将RDD中的所有数据通过JDBC连接写入数据库,如果使用map函数,可能要为每一个元素都创建一个connection,这样开销很大,如果使用mapPartitions,那么只需要针对每一个分区建立一个connection。把 RDD 中每一个元素平方!Java版本SparkConf con原创 2020-11-11 19:17:35 · 566 阅读 · 0 评论 -
Spark RDD算子之Action保存操作
1、saveAsTextFile将 RDD 以文本文件的格式存储到文件系统中scala版本 val conf = new SparkConf().setMaster("local[*]").setAppName("SaveAsTextFileScala") val sc = new SparkContext(conf) val rdd = sc.makeRDD(1 to 10,2) rdd.saveAsTextFile("file:///E://save/测试文件夹")/原创 2020-11-11 17:39:04 · 292 阅读 · 0 评论 -
Spark RDD算子之PairRDD的Action操作 -- countByKey、collectAsMap
1、countByKey统计 RDD 中各元素的数量Scala版本 val conf = new SparkConf().setMaster("local[*]").setAppName("CountByKeyScala") val sc = new SparkContext(conf) val rdd = sc.parallelize(Array(("a",2),("a",3),("c",5),("c",7),("b",9))) println(rdd.countByK原创 2020-11-11 12:58:55 · 214 阅读 · 0 评论 -
Spark RDD算子之常用Action算子
1、fiirst返回第一个元素Scala版本 val conf = new SparkConf().setAppName("FirstScala").setMaster("local[*]") val sc = new SparkContext(conf) val rdd = sc.parallelize(List(1,2,3,3)) println(rdd.first()) Java版本 SparkConf conf = new SparkConf(原创 2020-11-11 11:28:53 · 596 阅读 · 0 评论 -
Spark RDD算子之关联操作 -- join、fullOuterJoin、leftOuterJoin、rightOuterJoin、subtractByKey
1、join函数定义def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]def join[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (V, W))]def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))]可以把RDD1,RDD2中的相同的 key 给连接起来,类似于 sql 中的 join 操原创 2020-11-10 19:06:38 · 2448 阅读 · 0 评论 -
Spark RDD算子之键值对分组操作 -- groupByKey、cogroup
1、groupByKey基本语法def groupByKey(): RDD[(K, Iterable[V])]def groupByKey(numPartitions: Int): RDD[(K, Iterable[V])]def groupByKey(partitioner: Partitioner): RDD[(K, Iterable[V])]groupByKey 会将RDD[key,value]按照相同的 key 进行分组,形成RDD[key,Iterable[value]]的形式, 有点原创 2020-11-10 11:20:13 · 955 阅读 · 0 评论 -
Spark RDD算子之键值对聚合操作 -- reduceByKey、foldByKey、sortByKey
1、reduceByKey接收一个函数,按照相同的key进行reduce操作,类似于scala的reduce的操作Scala版本 val conf = new SparkConf().setMaster("local[*]").setAppName("reduceByKeyScala") val sc = new SparkContext(conf) var mapRDD = sc.parallelize(List((1,2),(3,4),(3,6))) var redu原创 2020-11-10 10:15:21 · 405 阅读 · 0 评论 -
Spark RDD算子之键值对聚合 -- combineByKey
combineByKey应用于分布式数据集的数据聚合操作语法格式def combineByKey[C](createCombiner: (V) => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C): RD1、createCombinercombineByKey() 会遍历分区中的所有元素,每个元素的键要么还没有遇到过,要么原创 2020-11-09 19:31:06 · 383 阅读 · 0 评论 -
Spark RDD算子之键值对RDD的创建 -- mapToPair、flatMapToPair
1、mapToPair创建键值对 RDD;读取文件sample.txt,将每行的第一个单词作为键key,1 为值value创建pairRDD文件sample.txt中的内容如下:aa bb cc aa aa aa dd dd ee ee ee ee ff aa bb zksee kksee zz zksScala版本Scala 中没有mapToPair函数,但 Scala 有map val conf = new SparkConf().setAppName("Cartesia原创 2020-11-09 17:46:02 · 453 阅读 · 0 评论 -
Spark RDD算子之 -- distinct、union、intersection、subtract、cartesian
1、distinctdistinct 用于去重, 我们生成的 RDD 可能有重复的元素,使用 distinct 方法可以去掉重复的元素Scala版本 val conf = new SparkConf().setAppName("FlatMapScala").setMaster("local[*]") val sc = new SparkContext(conf) var RDD1 = sc.parallelize(List("aa","aa","bb","cc","dd","bb原创 2020-11-09 17:02:07 · 577 阅读 · 1 评论 -
Spark RDD算子之 -- filter、map、flatMap
1、filter对元素进行过滤,对每个元素应用指定函数,返回值为true的元素保留在新的 RDD 中读取文件sample.txt中的内容如下;现要求找出包含zks的整行内容aa bb cc aa aa aa dd dd ee ee ee ee ff aa bb zksee kksee zz zksScala版本 val conf = new SparkConf().setAppName("Filter").setMaster("local[*]") val sc = new原创 2020-11-09 16:02:21 · 1525 阅读 · 0 评论 -
Spark RDD算子之RDD的创建
1、parallelize调用SparkContext 的 parallelize(),将一个存在的集合,变成一个RDD,创建RDD的一种方式Scala有一个或两个参数,第一个为 Seq 集合,第二个参数是分区数(不传第二个参数则为默认分区数)返回一个 RDD sc.parallelize(List("shenzhen", "is a beautiful city"))Java有一个或两个参数,第一个为 List 集合,第二个参数是分区数(不传第二个参数则为默认分区数)返回一个 J原创 2020-11-05 16:03:41 · 297 阅读 · 0 评论 -
Spark RDD概述及IDEA初始化Spark运行环境
一、Spark RDD概念1、简单的解释RDD是将数据项拆分为多个分区的集合,存储在集群的工作节点上的内存中,并执行正确的操作2、复杂的解释RDD是用于数据转换的接口RDD指向了存储在HDFS、Cassandra、HBase等、或缓存(内存、内存+磁盘、仅磁盘等),或在故障或缓存收回时重新计算其他RDD分区中的数据3、RDD是弹性分布式数据集(1)分布式数据集RDD是只读的、分区记录的集合,每个分区分布在集群的不同节点上RDD并不存储真正的数据,只是对数据和操作的描述(2)弹性原创 2020-11-04 16:45:50 · 1103 阅读 · 0 评论 -
Spark基础及架构
一、Spark简介Spark诞生于加州大学伯克利分校AMP实验室,是一个基于内存的分布式计算框架发展历程:2009年诞生于加州大学伯克利分校AMP实验室2010年正式开源2013年6月正式成为Apache孵化项目2014年2月成为Apache顶级项目2014年5月正式发布Spark 1.0版本2014年10月Spark打破MapReduce保持的排序记录2015年发布了1.3、1.4、1.5版本2016年发布了1.6、2.x版本为什么使用Spark1、MapReduce编程模型.原创 2020-11-04 15:12:21 · 234 阅读 · 0 评论