面试题
1、你们的数仓中DWD层为什么要划分数据域?划分数据域之后会对ADS层造成什么影响?是可以提效还是可扩展性强?你们是如何考虑的呢?
2、AZkaban和dolphinScheduler的区别是什么?如果选型会从哪几个方面来考虑呢?
3、数仓中数据的幂等性如何实现?就是如何保证数仓中的数据不丢失和不重复?
4、零点漂移问题如何解决?
5、你们是如何统一指标口径?
6、某电商平台业务线的A运营组比如说提了一个GIV的计算公式,说不包含优惠卷的价格,就是不包含平台成本,平台补贴,B运营组又提了一个需求是GIV要包含平台补贴,这个时候如何去协调和沟通?
7、数据抽取工具分别有哪些优缺点?适用于哪些场景?
回答
1划分数据域,方便对业务环节进行拆解且清晰,能够快速定位找寻,ads 用的是主题域,划分后ads 会依赖跨域数据,如果底层数据域变动会影响ads 指标或标签,所以对于指标提现建议放到dws 做指标沉淀复用且方便找寻,对于ads 数据仍然是依赖但采用大宽表小宽表方法存储,大宽表即核心标签指标存放地方,能给后续ads 做到复用同时也是核心内容直接引用资产,但这样仍然会耦合,耦合点在于如果ads 大宽表不能产出下游也会等待,所以最好办法是对于核心大宽表拆解到2级主题存放
3更多是想问实时数据情况吧,参考kafka ack 与幂等以及Flink exactly once ,这里八股文就不解释了,说下离线的 离线抽取丢数情况还是有的,最简单办法还是扫count 即数据源和ods 如果不匹配则告警,如果是全量可以用表行数波动来判断,增量得和库匹配去写脚本了,至于重复则设置主键唯一dqc
5指标口径拉齐,从整体看与数分沟通,数分负责业务口径审批及对接,数仓负责技术口径审批及维护,对当前指标按照数据 主题域拆解归类生成指标域,指标域也由负责主题同学负责,同时建设指标上下线流程(流程在学习路线元数据指标那节课),并且建设指标中心去维护录入指标
6 核心问题在于指标多个业务方不统一情况,继续接5题的回答,生成指标中心后统一拉业务方负责人一起沟通确定指标业务口径,如后续更改则需要在审批指标时候抄送另外一方业务,让他们有告知,但如果业务方态度强硬可上升leader ,让负责人清楚目前指标状况和达成统一的好处,如果负责人也态度强硬并对自己leader 的leader 举报,则可以再退而求其次 单独开发for 这个部门,但这个口子能不开就不开。