RDD
案例一:连续登陆
1 | object ContinuouslandingRdd { |
案例二:分组转化

1 | //分组转化案例 |
SparkSQL
案例一:连续登陆
1 | object ContinuouslandingSql { |
案例二:分组转化
1 | -- begin_time - 上一个的end_time 大于6分钟就重新分一组 |
DSL
案例一:连续登陆
1 | object ContinuouslandingDsl { |
案例二:分组转化
1 | object GroupedIntoSqlDsl { |
闭包/多线程问题
在driver端初始化了一个object或class实例,要在executor运行,必须实现序列化接口
如果实例是object类型,则每个executor共享一个,如果是class类型,及new了一个实例,则一个task一个实例
在函数中初始化实例,如果是单例的,则一个进程(executor)只有一个实例,如果是class类型,看调用的算子,如果是map,则没来一条数据就
new 一个,如果是mappartition,则一个分区一个实例
1 | //多个线程共用一个变量,会出现线程安全问题 |