【闲聊】大数据开发新需求要考虑什么

  之前的文章写过了做大数据开发新需求的流程,没看过的可以看前面的文章。

大数据开发之新需求

那么开发之前需要考虑什么呢?这里就需要将所有需要考虑的问题及答案总结下来,形成一个技术方案文档,经过整个团队的评审,再进行开发。下面聊一聊出一个需求的方案需要考虑什么。

1.方案设计

方案设计要考虑的问题包括:数据产出、链路设计、源表说明、口径说明、表结构设计。

1.1 数据产出

首先设计出整个数据链路的拓扑图,举个例子:

在这里插入图片描述

这里需要注意用到的每个表的最晚产出时间,这决定了你的app层表最终产出的时间是几点。

1.2 链路设计

这里就是对上面拓扑图的解释,每一次聚合或者 join 得到什么结果。

1.3 源表说明

介绍上面拓扑图中用到的表,从中获得什么数据。

1.4 口径说明

阐述一些计算的逻辑,比如:

  • where 的条件:看过视频就算还是看过 3s 以上才算?视频还是直播?
  • group by 的字段:用什么聚合?
  • 时间:聚合 7 天还是 30 天?
1.5 表结构设计

产出的表有哪些字段、数据类型(比如百分数,存 0.35 还是 35?)、增量还是全量等。

2.链路性能与耗时

计算上面拓扑图中各个节点产出的资源消耗(CPU 核数、内存大小)和用时,比如:

  • CPU[300, 110]:表示 CPU 最大消耗 300 核,平均消耗 110 核;
  • Mem[2]:表示运行时存储最大消耗 2T;
  • Time[16, 3:00]:表示任务产出耗时 16min,3:00 左右产出;
  • Store[35, 30]:表示表单日分区存储 35G,数据量 30E。
3.数据查询

因为 Hive 表最终要推到 ES 或者 CH 才能供后端调用,所以这里需要记录 ES 的数据源是哪个 Hive 表,用在前端页面上的哪个模块。即 ES - Hive - UI 界面 的对应关系。并给出 SQL 查询的示例,让后端开发人员知道如何用怎样的 SQL 语句去查询。

4.数据回溯

开发完后回溯历史数据。

大数据开发之回溯

具体考虑的问题还是很多的,并不是直接的运行代码跑历史分区那么简单。如果这里不好理解,我可以举一个例子:

  • 表及其字段:table1 里面有三个指标 A、B、C,假如 A 是今日访问次数,B 是今日访问次数较昨日涨幅,C 是今日访问次数较上月涨幅。
  • 回溯范围:回溯历史 120 天的数据。
  • 问题:由于 B 指标依赖昨天的数据,C 指标依赖上月的数据,那么回溯只能一天一天跑,1 月 1 日 跑完了才能跑 1 月 2 日。
    • 时间:假如跑一天的数据要 15 min,那回溯 120 天就要 15 * 120 = 1800 min = 30 h,这不是浪费时间吗?
    • 资源:假如跑一天的数据要 300 核 CPU、1 T 内存,但是集群资源有 10000核 CPU、1000T 内存,这不是浪费资源吗?

显然一天一天跑数据是不可接受的。所以必须要想办法解决依赖,提高并行。至于怎么提高,后面单独写文章。

5.值域说明

这一部分也很重要,比如:

  • 算比例,分母为 0 怎么办?
  • 空值用 NULL 还是 0 还是其他?
6.数据完整性

例行任务也在写,自动回溯也在写,手动回溯也在写,怎么保证 Hive 表里面的数据是完整的?

7.总结

要学的其实很多,远非 SQL、Spark 原理、数据倾斜的处理那么简单…

欢迎点击此处关注公众号。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值