
spark
习惯de味道
这个作者很懒,什么都没留下…
展开
-
Spark GraphX的图形数据分析(四)
连通分量连通分量是一个子图,其中任何两个顶点通过一条边或一系列边相互连接,其顶点是原始图顶点集的子集,其边是原始图边集的子集 def connectedComponents(): Graph[VertexID, ED]示例:数据准备//reference.txt1,2,friend1,3,sister2,4,brother3,2,boss4,5,client1,9,friend6,7,cousin7,9,coworker8,9,father10,11,colleague1原创 2020-11-26 18:38:41 · 309 阅读 · 0 评论 -
Spark GraphX的图形数据分析(三)
pageRank(PR)算法用于评估网页链接的质量和数量,以确定该网页的重要性和权威性的相对分数,范围为0到10从本质上讲,PageRank是找出图中顶点(网页链接)的重要性GraphX提供了PageRank API用于计算图的PageRank//tol:收敛时允许的误差,越小越精确, 确定迭代是否结束的参数//resetProb: => VD2): Graph[VD2, ED]//操作边属性 def mapEdges[ED2](map: Edge[ED] => ED2): Graph[VD, ED2]//操作整个三元组 def mapTripl原创 2020-11-26 15:47:46 · 163 阅读 · 0 评论 -
Spark Graphx图形数据分析(一)
目录一、为什么需要图计算二、图的基本概念三、图的术语四、图的经典表示法五、Spark GraphX 简介六、GraphX核心抽象七、图信息八、示例一、为什么需要图计算许多大数据以大规模图或网络的形式呈现许多非图结构的大数据,常会被转换为图模型进行分析图数据结构很好地表达了数据之间的关联性二、图的基本概念图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种网状数据结构– 通常表示为二元组:Gragh=(V,E)– 可以对事物之间的关系建模应用场景– 在地图应用中原创 2020-11-25 09:45:19 · 630 阅读 · 0 评论 -
Spark日志分析--json格式、传统格式日志
目录一、Json文件日志1.1 清洗数据1.2 rdd转dataFrame格式1.3 提取'cm'中信息1.4 提取'event'中信息1.5 按'en'中的类型分类生成表1.6 将生成的表保存到hive库1.7 查看hive中的表二、传统格式日志2.1 数据清洗2.2 拆分url2.3 数据保存到MySQL库点击下载样例文件提取码: vjex一、Json文件日志使用数据 op.log文件注:spark-shell界面操作1.1 清洗数据数据样例展示:cm ap et id"cm":{"l原创 2020-11-23 14:35:38 · 543 阅读 · 0 评论 -
Spark SQL操作外部数据源
Spark SQLSpark SQL是Spark的核心组件之一(2014.4 Spark1.0)能够直接访问现存的Hive数据提供JDBC/ODBC接口供第三方工具借助Spark进行数据处理提供了更高层级的接口方便地处理数据支持多种操作方式:SQL、API编程支持多种外部数据源:Parquet、JSON、RDBMS等SparkContextSQLContextSpark SQL的编程入口HiveContextSQLContext的子集,包含更多功能SparkSession(S原创 2020-11-18 12:30:50 · 160 阅读 · 0 评论 -
Spark装载数据源
Spark可以加载好多种外部数据源的格式,例如:csv,text,json,parquet等。我们在这里讲解下csv和json格式。一、装载CSV数据源文件链接提取码: t4n2文件预览使用SparkContextdef main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("scvdemo") val sc = new SparkContext(原创 2020-11-12 15:56:30 · 167 阅读 · 0 评论 -
Spark分布式计算机原理
目录一、RDD的依赖关系二、DAG工作原理三、Spark Shuffle过程四、RDD优化一、RDD持久化二、RDD共享变量三、RDD分区设计四、数据倾斜一、RDD的依赖关系Lineage:血统、遗传1.RDD最重要的特性之一,保存了RDD的依赖关系2.RDD实现了基于Lineage的容错机制依赖关系1.宽依赖一个父RDD的分区被子RDD的多个分区使用2.窄依赖一个父RDD的分区被子RDD的一个分区使用宽依赖对比窄依赖:1.宽依赖对应shuffle操作,需要在运行时将同一个父RD原创 2020-11-12 14:10:22 · 254 阅读 · 0 评论 -
Spark RDD算子(十二) 保存操作saveAsTextFile,saveAsSequenceFile,saveAsObjectFile,saveAsHadoopFile 等
目录一、saveAsTextFile二、saveAsSequenceFile三、saveAsObjectFile四、saveAsHadoopFile五、saveAsHadoopDataset六、saveAsNewAPIHadoopFile七、saveAsNewAPIHadoopDataset一、saveAsTextFile用于将RDD以文本文件的格式存储到指定路径。codec参数可以指定压缩的类名。val rdd = sc.makeRDD(1 to 10,2)rdd.saveAsTextFile(原创 2020-11-12 14:08:50 · 1436 阅读 · 0 评论 -
Spark RDD算子(十一) RDD 分区操作 mapPartitions、mapPartitionsWithIndex、glom
一、mapPartitionsmapPartition可以倒过来理解,先partition,再把每个partition进行map函数适用场景如果在映射的过程中需要频繁创建额外的对象,使用mapPartitions要比map高效。比如,将RDD中的所有数据通过JDBC连接写入数据库,如果使用map函数,可能要为每一个元素都创建一个connection,这样开销很大,如果使用mapPartitions,那么只需要针对每一个分区建立一个connection。下面的例子java实现,把每一个元素平方S原创 2020-11-12 14:01:34 · 283 阅读 · 0 评论 -
Spark RDD算子(十) PairRDD的Action操作 countByKey、collectAsMap
目录一、countByKey二、collectAsMap一、countByKey以RDD{(1, 2),(2,4),(2,5), (3, 4),(3,5), (3, 6)}为例 rdd.countByKey会返回{(1,1),(2,2),(3,3)}即1个以1为key,2个以2为key,3个以3为keyscala版本val rdd = sc.makeRDD(List((1,2),(2,4),(2,5),(3,4),(3,5),(3,6)))rdd.countByKey.foreach(printl原创 2020-11-11 09:35:45 · 153 阅读 · 0 评论 -
Spark RDD算子(九) 基本的行动算子操作
目录一、first二、take三、collect四、 count五、countByValue六、 reduce七、aggregate八、fold九、top一、first返回第一个元素scalaval rdd=sc.makeRDD(List(1,2,3))rdd.first() // 1javaJavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));Integer num = rdd.first; // 1原创 2020-11-11 09:31:21 · 204 阅读 · 0 评论 -
Spark RDD算子(八) subtractByKey、 join、rightOuterJoin、leftOuterJoin
目录一、subtractByKey二、 join三、rightOuterJoin四、leftOuterJoin一、subtractByKey类似于subtract,删掉 rdd 中键与 rdd2 中的键相同的元素二、 join可以把rdd,rdd2中的相同的key给连接起来,类似于sql中的join操作三、rightOuterJoin对两个 rdd 进行连接操作,类似于sql中的右外连接,存在的话,value用的Some, 不存在用的None,具体的看上面的图和下面的代码即可四、leftOut原创 2020-11-11 09:11:23 · 508 阅读 · 0 评论 -
Spark RDD算子(七) groupByKey、cogroup
目录一、groupByKey二、cogroup一、groupByKeygroupByKey会将RDD[key,value] 按照相同的key进行分组,形成RDD[key,Iterable[value]]的形式, 有点类似于sql中的groupbygroupByKey不能传算法,消耗性能,优化尽量使用reduceByKey或combineByKey例:对学生的成绩进行分组scala版本val conf=new SparkConf().setMaster("local[2]").setAppName原创 2020-11-11 09:04:14 · 186 阅读 · 0 评论 -
Spark RDD算子(六) reduceByKey、foldByKey、sortByKey
目录一、reduceByKey二、foldByKey三、sortByKey一、reduceByKey接收一个函数,按照相同的key进行reduce操作,类似于scala的reduce的操作scala版本例1:对二元组进行reduceByKeyval rdd1=sc.makeRDD(List((1,2),(1,3),(4,6),(4,8),(5,1)))val rdd2=rdd1.reduceByKey((x,y)=>{println(x+"+"+y);x+y})rdd2.collect.原创 2020-11-11 08:56:08 · 388 阅读 · 0 评论 -
Spark RDD算子(五) CombineByKey
CombineByKey聚合数据一般在集中式数据比较方便,如果涉及到分布式的数据集,可以使用combineByKey, 这个是各种聚集操作的鼻祖def combineByKey[C](createCombiner : Function1[V, C], mergeValue : Function2[C, V, C], mergeCombiners : Function2[C, C, C]) : RDD[scala.Tuple2[K, C]]combineByKey涉及三个方法:createComb原创 2020-11-11 08:47:30 · 401 阅读 · 0 评论 -
Spark RDD算子(四) mapToPair、flatMapToPair
目录一、mapToPair二、flatMapToPair一、mapToPair将每一行的第一个单词作为键,1 作为value创建pairRDDscala版本scala没有mapToPair,使用map就能完成val conf=new SparkConf().setMaster("local[2]").setAppName("maptopair")val sc=new SparkContext(conf)val lines=sc.textFile("D:/text/sample.txt")va原创 2020-11-11 08:39:36 · 2272 阅读 · 0 评论 -
Spark RDD算子(三) distinct、union、intersection、subtract、cartesian
目录一、distinct二、union三、intersection四、subtract五、cartesian一、distinctdistinct用于去重,此方法涉及到混洗,操作开销很大scala版本val conf=new SparkConf().setMaster("local[2]").setAppName("distinctdemo")val sc=new SparkContext(conf)val rdd=sc.makeRDD(List("a","b","a","c"))rdd.di原创 2020-11-10 20:49:15 · 147 阅读 · 0 评论 -
Spark RDD算子(二) filter、map、flatMap
filter、map、flatMap一、filter二、map三、flatMap一、filter过滤算子scala版本val conf = new SparkConf().setMaster("local[2]").setAppName("filterscala")val sc=new SparkContext(conf)val rdd = sc.textFile("in/sample.txt")rdd.filter(_.contains("zks")).collect.foreach(pr原创 2020-11-10 20:08:25 · 419 阅读 · 0 评论 -
Spark RDD算子(一) parallelize、textFile
RDD创建算子一、parallelize二、textFile一、parallelize调用SparkContext 的 parallelize(),将一个存在的集合,变成一个RDD,这种方式试用于学习spark和做一些spark的测试scala版本scala的parallelize有两个参数,第一个是一个Seq集合,第二个是分区数,如果没有则会是默认分区数scala版本可以选择makeRDD替换parallelize,java版本则没有val rdd = sc.parallelize(List(原创 2020-11-10 20:01:51 · 2762 阅读 · 0 评论 -
Spark基础及架构
为什么使用SparkMapReduce编程模型的局限性繁杂只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码处理效率低:Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据任务调度与启动开销大不适合迭代处理、交互式处理和流式处理Spark是类Hadoop MapReduce的通用并行框架Job中间输出结果可以保存在内存,不再需要读写HDFS比MapReduce平均快10倍以上Spark优势速度快基于内存数据处理,比MR快100个数量原创 2020-11-04 16:07:38 · 335 阅读 · 0 评论 -
Intellij IDEA--Maven创建Spark工程
Maven创建Spark工程一、创建Maven项目二、添加依赖三、编写Spark源代码一、创建Maven项目创建quickstart的maven的项目:编写组名和项目名:修改Maven的安装目录点击完成二、添加依赖在pom.xml中添加依赖,选择import-change根据当前使用的jdk和spark版本选择修改版本号<!--修改jdk版本号--><properties> <project.build.sourceEnc原创 2020-11-03 18:45:22 · 1478 阅读 · 0 评论 -
spark安装
一、前提安装jdk版本号:scala scala-2.11.12spark spark-2.4.5传送链接提取码:w2xv二、安装scala环境上传scala安装包到opt目录下解压:tar -zxvf scala-2.11.12.tgz重命名:mv scala-2.11.12 scala配置系统环境变量:export SCALA_HOME=/opt/scalaexport PATH=$SCALA_HOME/bin:$PATH编辑完成后:source /etc原创 2020-10-30 14:32:18 · 225 阅读 · 0 评论