Spark踩坑vlog——避免使用两个字段进行外连接时产生笛卡尔积的一种办法

        日常开发中遇到了一种需要使用两个字段对两张表进行外连接的场景,但是在这种情况下,会产生笛卡尔积,造成数据量疯狂增长,于是本文中使用union all替代这种情况下的join,来解决这个问题。

业务场景

        1.文章表中有“纯文字”、“图片”、“长视频”、“短视频”四类,其中,需要修正指标“阅读量”,此指标为新添字段,为了与各种类下的原有阅读量区分,取名“新阅读量”;
        2.需要添加的“新阅读量”字段只在“长视频”类别下添加,其余类别下的“新阅读量”字段值记为0。
        3.以作者为纬度进行统计,最终结果为此作者在各个类型下的文章情况;
        4.一个作者纬度下,此四种文章类型不保证全都有;
        5.若一个作者纬度下,在添加新字段前,不存在“长视频”类,则对此作者新添加一个“长视频”类别,其余指标全部置为0,新增的“新阅读量”指标值记为本次新值;

表情况

        当前有两张表,一张是原始数据表,另一张是存放“新阅读量”的表,Schema如下:

  • 1.原表(author_old)
    • author_id //作者唯一编码
    • type //文章类型,值包括“纯文字”/“图片”/“长视频”/“短视频”四类
    • view_count_old //原阅读量
    • like_count //点赞量
  • 2.新表(author_new)
    • author_id //作者唯一编码
    • type //文章类型&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值