![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scala和spark
文章平均质量分 77
第一次学习
一把秀儿
这个作者很懒,什么都没留下…
展开
-
spark_sql案例分析
uid,dtguid01,2018-02-28guid01,2018-03-01guid01,2018-03-02guid01,2018-03-05guid01,2018-03-04guid01,2018-03-06guid01,2018-03-07guid02,2018-03-01guid02,2018-03-02guid02,2018-03-03guid02,2018-03-06需求计算连续登录三天及以上的用户select --要把uid,和时间都去重因为有的客户一天会登录好原创 2021-01-20 20:03:18 · 191 阅读 · 0 评论 -
spark-sql
在spaek-shell端演示1.val rdd1 =sc.textFile(“hdfs://linux01:8020/1.txt”)2.case class User(id:Long , name:String , age:Int , fv:Double)3.rdd1.map(e => {val fields = e.split(",")User(fields(0).toLong , fields(1) , fields(2).toInt , fields(3).toDouble)})4.原创 2021-01-22 21:51:40 · 274 阅读 · 0 评论 -
StandAlone的Cluster模式和SparkOnYarn
client模式运行jar包/opt/apps/spark-3.0.1-bin-hadoop3.2/bin/spark-submit --master spark://linux01:7077 --executor-memory 1g --total-executor-cores 3 --class cn._51doit.day01.WordCount /data/spark-1.0-SNAPSHOT.jar hdfs://linux01:8020/wc hdfs://linux01:8020/o原创 2021-01-22 21:52:05 · 144 阅读 · 0 评论 -
spark剩余知识点整合,自定义排序,序列化,闭包,线程安全问题,累加器
自定义排序和序列化的问题案例import cn._51doit.demo03.SparkUtilsimport org.apache.spark.rdd.RDDobject CustomSort01 { def main(args: Array[String]): Unit = { val sc = SparkUtils.createContext() val data: RDD[String] = sc.parallelize(List("laoduan,36,99.99",原创 2021-01-22 21:52:17 · 174 阅读 · 0 评论 -
RDD上的特殊方法
rdd.cache在触发action时会把计算结果算出来,与此同时会把对应的rdd放到内存里面,如果就触发一次action或者这个 rdd没有复用就没意义cache会怎么用嫩:通常会吧数据先过滤一下保留有用的字段在rdd.cacherdd.unpersist(true) 用对应的rdd点unpersist(true)就可以把他从内存中释放掉参数填true是同步的,是阻塞,要这边释放掉drive端代码才可以往下走默认是false是异步的,是不阻塞但是用原本的存储格式是java对象的方式存原创 2020-12-30 19:55:09 · 551 阅读 · 0 评论 -
算子整体回顾和案例分析
底层的RDD常用的就4个MapPartitionsRDD:对;每个分区进行操作是一个比较底层的算子具体怎么实现要看底层的computer方法,对RDD进行map本质上是对每一个分区进行map,每一个分区对应一个迭代器,其实是把map方法作用在迭代器上,然后把要传的函数先检查一下看有没有未被序列化的问题然后再传进去,接就是说以后生成task,task如果是一个很复杂的功能他再一个stage里会生成一个迭代器链,而迭代器链里的某一个操作就是对应RDD里面的computer方法suffleRDD:groupB原创 2021-01-20 20:03:42 · 165 阅读 · 0 评论 -
Transformation 的各种算子详解
RDD是一个弹性分布式可复原的数据集,他是一个抽象的他里面并不装数据,他里面装的是,描述以后从哪里读数据描述以后怎么算,对RDD进行操作本质上是对RDD里面的每一个分区进行操作,一个分区对应一个迭代器,其实是吧算子传到迭代器里面了,对RDD进行map本质上是对里面的每一个分区,对应的数据进行map,其实解释调用迭代器的方法,然后被函数传进去,但是我没在实际计算中有可能传很多的逻辑在一个stage(阶段)里面其实是形成了迭代器链,对数据进行了链式操作,(注意是在一个stage里面),因为以后会有suffer,原创 2020-12-26 23:26:59 · 612 阅读 · 1 评论 -
RDD详解课堂笔记
sc.textFile(“里面放路径”) 这两个都是创建一个RDDsc.parallelize(里面放集合)val arr = Arry(1,2,3,4,5,6,7,8,9)val rdd = sc.parallelize(arr)rdd.partitions.length 这是查看有几个分区用parallelize创建分区的时候不指定分区,分区的数量跟total-executor-cores指定几个核有关分区数量决定了任务的并行度 并行度越高原创 2020-12-23 23:55:23 · 197 阅读 · 0 评论 -
spark
spark架构体系master负责管理,worker负责管理当前节,点启动Master,然后内部会启动一个定时器,定期检测超时的worker,移除超时的Worker 启动Worker,跟Master建立网络链接,将自己的信息(id,内存,cou等信息)注册给Master,Master接受到消息后会将Worker的信息保存起来,保存到内存,也可以持久化到磁盘,然后向Worker发送注册成功的消息Worker接受到了Master发送注册成功的消息,然后启动一个定时器,定期向Master’发送心跳(发送心跳的目原创 2021-01-20 20:04:00 · 136 阅读 · 1 评论 -
akka,柯里化
用老师和学生的例子比喻Actor编程模型多个学生问多个老师问题学生和老师都是Actor的作用就是收发消息,处理逻辑的教学总监和班主任是ActorSystrm,是用来创建Actor的,并且监控和管理他创建的ActorActorSystrm是单例的,一个进程只要有一个即可Actor是多例的,可以创建多个实例Actor编程模式就通过送消息来实现并发的Akka就是基于Actor编程模型实现的,可以是单机的也可以是分布式的RPC通讯案例过程分析大哥在机器一上有一个进程Master这个以后要进行通信的原创 2021-01-20 20:01:40 · 85 阅读 · 0 评论 -
scala的函数学习,方法,类和构造器
定义一个完整的函数val fun : (Int , Int) => Int = ( x , y ) => x + y 这是一个完整的函数定义fun是函数的名字(Int,Int)是参数的数据类型Int是返回值类型(x,y)是参数x+y是函数体val fun = (x: Int , y: Int) => x + y 这是简写的函数等同于上面的注意返回值类型一定要写函数 的下滑线_简写方法val arr = Array(1,2,3) 定义一个数组arr.map(x =>原创 2020-12-17 23:30:57 · 275 阅读 · 0 评论 -
scala 基础语法
val 定义变量值不可变var 定义变量值可变Any 是所有数据类型的祖宗 类似于objectUnit 类 写做() 相当于java中的 void数组的定义 Array(1,2,3) 注意是小括号for循环语法结构: for( i <- 表达式\数组\集合)1 to 10 返回1到10这个区间 包含1也包含101 until 10 返回1到10这个区间 包含1但不包含10reverse 反转双层for循环带条件 for(i <原创 2020-12-15 19:51:31 · 274 阅读 · 0 评论