spark
qzWsong
这个作者很懒,什么都没留下…
展开
-
spark的任务提交方式及流程
测试用,不多赘述。原创 2024-01-05 16:35:59 · 528 阅读 · 0 评论 -
spark RDD中的并行度、分区器默认策略
yarn:getInt("spark.default.parallelism", math.max(totalCoreCount.get(), 2)),根据spark.default.parallelism参数,如果没配置就是yarn的executor的总逻辑核数,最小也得两个并行度。如果上游所有rdd中的最大并行度/最大分区器所在rdd的并行度原创 2023-03-14 13:57:21 · 748 阅读 · 0 评论 -
spark如何生成/加载checkpoint的数据
sparkContext中checkpointFile方法是私有的,我们可以在org.apache.spark包下创建一个一个类,调用checkpointFile方法即可。sparkContext通过checkpointFile方法指定ck目录,实现加载上次的数据,但是不对外开放。需要缓存的rdd调用checkpoint方法。设置checkpoint目录。原创 2023-03-13 16:01:48 · 146 阅读 · 0 评论 -
spark数据源小文件问题如何解决
当小文件很多的时候,如果用默认的InputFormat效率会很低,此时我们可以采用CombineFileInputFormat,它会首先合并小文件,然后再交给task进行调度。spark读取hdfs文件时,会将一个分片作为一个分区,使用一个task进行调度,如果文件不足128M,也会作为一个分区。原创 2023-03-10 19:22:56 · 356 阅读 · 0 评论 -
大数据异常
大数据异常。原创 2023-01-17 14:09:17 · 581 阅读 · 0 评论 -
spark三种实现map端join的方式:闭包、广播、缓存文件
前者发送数据的时候,采用bitTolerant协议,首先driver将obj序列化后分为多份,然后某个task获取到一部分之后就可以作为服务器发给另外的task。主要区别:广播变量传输的效率要高于闭包引用,尤其是obj数据比较大时效果明显。后者每个task的obj数据都有driver端序列化后发送过来的。spark中函数体内引用函数体外部变量,有如下两种方式。原创 2023-01-04 17:08:50 · 679 阅读 · 0 评论 -
spark读取Jdbc数据
创建一个JdbcRdd,这个JdbcRdd是rdd的子类,需要7个参数,有一定局限性。原创 2022-11-16 14:15:09 · 879 阅读 · 0 评论 -
spark-sql 指定metastore地址、读取mysql
spark-sql --database src --hiveconf hive.metastore.uris=thrift://hdp02:9083 -e "select * from src_db2" --driver-java-options '-Djava.net.preferIPv4Stack=true'原创 2022-08-01 10:59:21 · 864 阅读 · 0 评论 -
case class的用法
case class 模式匹配原创 2022-02-18 12:41:38 · 257 阅读 · 0 评论 -
常用的窗口函数
lag() lead() first_value() ,last_value() ,sum_over() ,row_number()原创 2022-02-17 23:07:20 · 367 阅读 · 0 评论 -
session分割
session标准步骤原创 2022-02-17 22:51:10 · 1236 阅读 · 0 评论 -
分组topn模型
分组topn的几种算法简单方式1、用户少或者用户记录少 1)、根据uid分组,组内元素如果少的话就加载到内存 然后orderby me,ts desc 2)、根据uid分组,如果用户少的话就把所有的用户都distinct出来然后,遍历用户,每次都filter出来,然后调用rdd的orderby(spark)2、用户多,用户记录也多,上边两种都不是适合 1)、重写分区器(根据uid分区)和排序方法,相同分区内的元素取前n条 2)、重写分区器 如果用...原创 2021-03-11 21:45:42 · 329 阅读 · 0 评论 -
大数据重要操作
经纬度计算 GeoHash,相同区域内根据lng,lat和GeoHash方法得出的结果相同<dependency><groupId>ch.hsr</groupId><artifactId>geohash</artifactId><version>1.3.0</version></dependency>GeoHash.geoHashStringWithCharacterPrecision(l原创 2021-03-09 22:16:56 · 767 阅读 · 0 评论 -
spark的client模式与cluster模式
Client模式,driver端和sparksubmit在一起Cluster模式,diver端和sparksubmit没关系了,他是一个特殊的executor,叫做DirverWapper(他需要读取jar包,所以最好把jar包放到hdfs上)通过http请求启动 spark程序...原创 2021-02-23 13:01:07 · 592 阅读 · 0 评论 -
dataset,dataframe,rdd区别
dateset[row]=datefrarme也就是说dataframe是dataset的一种特殊情况,他两者与rdd最大的区别 有两点1、dataframe和dataset 用的是堆外内存不采用java的Gc所以对内存的利用会更加高效2、dataframe和dataset 带有执行计划,可以对任务进行优化,比如join().distinct() ,他会自动优化成先distinct后jion,而且3.0版本后,他不光会优化执行顺序,他还可以分析如果是小表,就可以直接广播,直接不需要shuffe了.原创 2021-02-10 16:58:24 · 254 阅读 · 0 评论 -
sparkUDF 自定义函数
函数可以提出来放到一个object里原创 2021-02-09 20:34:14 · 157 阅读 · 0 评论 -
对dataForm进行map操作
原创 2021-02-08 22:22:25 · 537 阅读 · 0 评论 -
shuffle缓存,跳过stage
为什么有时候 触发多次action的时候,后边的会比前边的快。比如 wordcount,第一次 collect的时候 6秒 第二次collect只需要3秒 为什么????因为,spark在shuffle真正触发的时候,会把shuffle结果缓存到磁盘(/tmp/spark**********/****mgr/********下),下次action的时候,shuffle之前的数据就不需要执行了,就会被skip掉,所以变快了。那如果,tmp下的缓存数据丢失了呢? spark会报错,但是 他还会帮你.原创 2021-02-03 21:05:28 · 243 阅读 · 0 评论 -
算子,不产生shuffle的一定不产生,产生shuffle的不一定产生
什么是 shuffle:父 RDD 的一个分区的数据,要给子 RDD 的多个分区,shuffle 要有网络传输,但是有网络传输的,不一定就是 shuflle如果当前rdd与父rdd 分区器都是Hashpartitioner,而且分区数相同,那么就不会产生shuffle,就是如果一个分区已经经历过一次 shuffle或者分区,而且下次的分区数和分区器。也不发生变化就不是shuffle,他认为已经shuffle过了。...原创 2021-02-03 20:04:37 · 399 阅读 · 0 评论 -
Spark闭包,序列化,多线程、线程抢占(线程不安全)问题
方案一new Object(); // 需要实现序列化map(x=>{ 引用外边Object})结果同一个Executor不同线程调用的Object为同一个但是 多个Executor 之间不是同一个--------------------------------方案二new Class(); // 需要实现序列化map(x=>{ 引用外边Class})结果每个线程中的Class都是一个新的。--------------------------------.原创 2021-02-03 12:46:09 · 571 阅读 · 1 评论 -
spark流程
原创 2021-02-01 22:05:36 · 76 阅读 · 0 评论 -
Scala排序
排序-简单版package com.ws.orderclass OrderBean(val name:String,val age:Int,val fv:Double) extends Ordered[OrderBean] with Serializable { override def compare(that: OrderBean): Int = { if(this.fv == that.fv){ this.age.compareTo(that.age) }el原创 2021-02-01 20:47:26 · 183 阅读 · 0 评论 -
Spark-Hdfs
addr.dat1.0.1.1|1.0.1.2|16777471|16777472|亚洲|中国|山东|遥墙||电信|350100|China|CN|119.306239|26.0753021.0.1.1|1.0.1.2|16777473|16777474|亚洲|中国|山东|王楼||电信|350100|China|CN|119.306239|26.0753021.0.1.1|1.0.1.2|16777475|16777476|亚洲|中国|山东|济南||电信|350100|China|CN|119..原创 2021-01-30 13:37:13 · 98 阅读 · 0 评论 -
sparkToHbase
Cid,关联 order_goods_type 获取订单商品名称,然后导入hbase{"oid":"o123", "cid": 1, "money": 600.0, "longitude":116.397128,"latitude":39.916527}oid":"o112", "cid": 3, "money": 200.0, "longitude":118.396128,"latitude":35.916527}{"oid":"o124", "cid": 2, "money": 200...原创 2021-01-27 22:50:50 · 131 阅读 · 0 评论 -
action
// collect,将数据以数组形式收集回 Driver 端,数据按照分区编号有序返回val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)rdd1.collectres1: Array[Int] = Array(1, 2, 3, 4, 5)// reduce,将数据以输入的函数进行聚合返回一个值val rdd1 = sc.parallelize( List (1,2,3,4,5), 2)rdd1.reduce(_+_)res2: Int = 1.原创 2021-01-26 22:36:05 · 74 阅读 · 0 评论 -
transformation
// map,遍历操作集合的每一个元素,处理之后返回,组成一个新的listval rdd1: RDD[Int] = sc.parallelize( List (5,6,4,7,3,8,2,9,1,10)).map(_*2)// faltMap,操作的是list<list>,遍历list中的list,对list处理变成一个总的listval rdd2 = sc.parallelize( Array ("a b c", "d e f", "h i j"))rdd2.flatMap(...原创 2021-01-26 12:39:25 · 102 阅读 · 0 评论 -
sparkToMysql(join)
计算不同商品的销售总价package com.ws.orderCountimport com.google.gson.Gsonimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object OrderCount { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName(原创 2021-01-26 20:58:44 · 99 阅读 · 0 评论