Spark 的 Join 类型

Shuffled Hash Join Spark 默认的 Join 类型是 Shuffled Hash Join Shuffled Hash Join 分为两个阶段: Shuffle: 将具有相同 key 值的数据分配到同一个分区中 Join: 在本地,对数据集执行 join Sort Merge Join Sort »

Spark 使用 BloomFilter 过滤

Spark 2.1 之后,基于 Guava 的 BloomFilter 实现了自己的布隆过滤器(BloomFilter) 在吴军的《数学之美》中第二十一章中,详细介绍了布隆过滤器的原理及应用 相比较其它数据结构,布隆过滤器在时间和空间都要占优势,但是,存在一定的错误率 Demo 下面以计算连续两天同时登录用户数为例: 从访问日志 access_log 查询所有的用户 ID 创建布隆过滤器 »

Spark SQL 优化 count distinct

org.apache.spark.sql.functions 的 countDistinct 方法,可用于统计分组内不同值的数据 以统计页面的 PV 和 UV为例: // accessLogDF 页面的访问日志 accessLogDF.groupBy(accessLogDF("page_id")).agg( count("user_id") as "pv" »

Spark 宽依赖和窄依赖

一个 Spark 应用至少由一个 Job 组成,一个 Job 至少由一个 Stage 组成,一个 Stage 又由多个 Task 组成 RDD 操作分为两类: Transformation Action 而区分 Job 的不同 Stage 却没有那么明显,这里就需要提到 RDD »