ods到dwd层数据关联位置信息的spark api

1 场景前提

我们将ods(贴源层)数据保存到(dwd)明细数据层时,要经过下面的操作

  • 数据清洗
  • session切割
  • 数据规范化处理
  • 位置信息继承
  • 生成一个全局唯一的guid

我们可用spark来读取表,转换成rdd来进行操作

2 编程spark

2.1 我们要先读取两张表:

  • session分割后的日志表 tmp.mall_applog_session_split
  • geohash地理位置参考表 dim_refgeo,作为维度表
    除了两张表,还需要ip地址库,将该数据读取成字节文件,广播出去

2.2 将读取到的维度数据转换成geoBean广播出去

2.3 处理日志数据

将日志表封装进一个case class (LogBean)中,并从广播数据中取到geo地理位置维度数据

先从日志中取出lagitude、longitude,计算出geoHash,

根据这个hash值,从维度数据中取数据,如果匹配的上,就返回地址信息

如果匹配不上,和ip地址数据进行关联,返回地址信息

2.4 优化细节

算子:

我们处理日志数据时使用的算子,刚开始为map,替换成mapPartition,这样,每个分区执行一次,在迭代器外面来获取广播变量,就不需要和map方法一样,每条数据都要获取一次广播变量。

2.5 将结果写入一个parquet文件、或者存入hive一个临时表中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值