Spark
记录Spark开发要点、源码解析
houpk999
这个作者很懒,什么都没留下…
展开
-
Spark无法做对数据的顺序性有要求的计算
先说结论:Spark无法做对数据的顺序性有要求的计算,原因是RDD有多个分区,而排序只能保证各个分区数据顺序性,无法保障全局数据的顺序性。1.缘起这是个让我困惑很久的结论了,最终的解答源于一个问题:根据车辆的轨迹信息,计算车辆的行驶里程。解决这个问题需要两步:①将车辆定位信息按时间戳进行排序;②使用reduce算子进行距离累加操作。原代码如下所示:carLocationIn...原创 2020-03-04 15:25:39 · 1146 阅读 · 1 评论 -
Spark离线作业编排一:Linux的crontab定时任务
概述Spark的离线作业进行编排主要有两种:第一种是使用Linux的crontab定时任务;第二种是使用组件(例如Oozie)进行编排。各自优缺点:crontab的优点是简单易行,缺点是如果多个作业之间存在先后关系,较难实现(比如前一个任务执行结束后,创建一个文件夹,后一个任务检测到文件夹后开始执行);Oozie的优点是较好地解决了多个Spark任务统筹编排,缺点是使用比较...原创 2020-02-27 16:16:26 · 462 阅读 · 0 评论 -
Spark操作Mysql数据库
概述Spark操作Mysql的方式有两种,一种是常见的JDBC(甚至mybatis),另一种是Spark SQL。JDBC跟Spark没有关联,是Java语言特性,可以使用JDBC将结果从Mysql中读出来,再使用Spark进行相应的运算,使用JDBC相对比较简单。Spark SQL相比JDBC的优势在于读取Mysql后的结果为DataFrame,可以直接使用Spark进行相应的...原创 2020-02-27 15:07:41 · 814 阅读 · 0 评论 -
一次Spark程序运行缓慢原因排查
功能:判断车辆轨迹数据在指定区域内停留时间超过半小时。实现思路:车辆定位数据生成RDD,遍历RDD每个元素,判断是否在指定区域内,如果在,则累加计算停留时间,最后判断停留时间是否超过半小时。代码:sortLocationInfoRDD.foreachPartition( new VoidFunction<Iterator<CarLo...原创 2020-02-27 15:08:25 · 3962 阅读 · 0 评论