Spark
大数据赵轩
热爱学习,顺便敲代码
展开
-
Value类型-coalesce()合并分区
Value类型-coalesce()合并分区1、coalesce算子:def coalesce(分区个数 :Int , 是否走shuffle :Boolean = false) : RDD[T]2、coalesce算子功能:coalesce算子一般用来合并分区(即减少分区个数,解决小文件分区过多问题),第二个参数决定是否走shuffle,默认是false;需要注意的是当需要增加分区个数时,必须将第二个参数设置为true才能实现3、例子:4个分区合并为2个分区1. package com.zh原创 2021-05-08 22:46:19 · 222 阅读 · 0 评论 -
Value类型-GroupBy之WordCount
Value类型-GroupBy之WordCount1、lambda表达式写法package com.zhaoxuan.scalatestimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}/** * 2.3.1.8 Value类型-GroupBy之WordCount * */object WordCountgroupBy { def main(args: Array[Str原创 2021-05-08 22:44:52 · 302 阅读 · 0 评论 -
Value类型-groupBy()分组
Value类型-groupBy()分组1、groupBy()算子函数签名:def groupBy(f : T =>K]) : RDD[K, Iterable[T]]2、算子·功能:1、将原来RDD中的元素按照groupBy中的函数f的执行结果进行分组2、结果相同的元素进入同一个迭代器3、groupBy算子存在shuffle4、shuffle会落盘,元素会在不同分区中乱窜3、例子1:将偶数、奇数分别分组1. package com.zhaoxuan.scalatest 2.原创 2021-05-07 22:44:55 · 608 阅读 · 1 评论 -
Value类型-glom()分区转换数组
Value类型-glom()分区转换数组1、函数签名def glom() : RDD[Array[T]]2、函数功能1、将原来RDD中的每个分区转换成一个数组2、将这些数组放到新的RDD中3、数组中的元素类型与原分区中的元素类型一致,不会改变3、例子:求出RDD中每个分区的最大值,并将最大值相加1. package com.zhaoxuan.scalatest 2. 3.import org.apache.spark.rdd.RDD 4.import org.apache.s原创 2021-05-07 22:41:31 · 348 阅读 · 0 评论 -
Value类型-mapPartitionsWithIndex()带分区号
Value类型-mapPartitionsWithIndex()带分区号1、格式:mapPartitionsWithIndex(index:Int,f : Iterator[T] => Iterator[U] , pP : Boolean = false) : RDD[U]2、功能:最前面多一个参数代表分区号,将原来RDD中的元素以分区为Iterator依次进入f函数,可以操作,使得输出结果加上分区号,方便看RDD内数据元素的分区2、例子:创建一个RDD,使之带分区号输出1. packag原创 2021-04-23 22:17:40 · 615 阅读 · 0 评论 -
Value类型-map()和mapPartitions()区别
2.3.1.3 Value类型-map()和mapPartitions()区别1、map算子:原来RDD中的元素遍历,然后依次进入map算子中的f函数,这些元素形成新的RDD2、mapPartitions算子:原来RDD中的元素,按照分区打包成Iterator迭代器,按批次依次进入mapPartitions算子中的f函数,在f函数内部需要手动写逻辑遍历Iterator中的元素并做操作后形成Iterator出来,最后形成新的RDD3、map算子每次处理RDD中的一个元素,处理完一个元素便释放内存;map原创 2021-04-23 22:16:05 · 166 阅读 · 0 评论 -
2.3.1.2 Value类型-mapPartitions()以分区为单位执行Map
2.3.1.2 Value类型-mapPartitions()以分区为单位执行Map----------------转载放原连接,违权必究--------------------------1、格式:mapPartitions(f : Iterator[T]=> Iterator[U],pP:Boolean = false) : RDD[U]2、功能:1、原来RDD中的元素按照一个分区为一个Iterator,遍历分区2、每个分区数据(Iterator)依次按批次进入mapPartitio原创 2021-04-23 00:07:33 · 137 阅读 · 0 评论 -
2.3.1.1 Value类型-map()映射
2.3.1.1 Value类型-map()映射1、格式map算子:map(f :T => U) :RDD[U]2、功能:1、原来RDD调用map算子时,会遍历原来RDD中的元素2、原来RDD中的元素会依次通过map算子中实参函数f3、最终原来RDD中的所有元素通过map算子中实参函数f后会形成一个新的RDD4、新的RDD和原来RDD中元素的分区不会改变(即不会shuffle,不会落盘);元素类型可能会改变(如Int元素在f中发生字符串拼接)3、例子:将原来RDD中的元素扩大2倍1.原创 2021-04-23 00:04:29 · 153 阅读 · 0 评论 -
2.1.2 RDD的创建-从集合中创建
2.1.2 RDD的创建-从集合中创建1、创建RDD有两个函数:parallelize()和makeRDD()【常用】2、代码步骤://2.1创建Spark配置文件val conf :SparkConf = new SparkConf().setAppName(“自定义App名字”).setMaster(“local[核心个数]”)//2.2创建SparkContext对象(sc)val sc :SparkContext = new SparkContext(conf)//2.3从集合中创建R原创 2021-04-21 22:23:47 · 155 阅读 · 0 评论 -
2.1.3 RDD的创建-从外部存储系统的数据集创建
2.1.3 RDD的创建-从外部存储系统的数据集创建1、从外部文件创建RDD,外部文件可以是:本地文件,支持Hadoop的文件系统(如Hbase,HDFS等)2、准备外部数据(HDFS上面的话,需要有准确的目录及文件路径)def main(args :Array[String]) :Unit = {val conf :SparkConf = new SparkConf().setAppName(“自定义App名字”).setMaster(“local[*]”)val sc :SparkConte原创 2021-04-21 22:20:46 · 564 阅读 · 0 评论