BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #37002同步于 2020/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

这种读取最晚day partition的方法是不是问题很大

PMS
2020/8/5镜像同步5 回复
面试时被问到,一个路径下有day partition folders,但是日期不是连续的,每天需要读取已有的最晚日期的day partition folder,然后处理完数据后再把结果存到今天的day partitino里。应当怎么做。 我说应当每天把数据存到两个路径。一个路径有day partition,存储所有历史数据;另一个存最新的历史数据,每次覆写一遍。 面试官说我的方法不好,需要写两遍,并且多一个文件夹。他们组制定的标准做法是,读进来所有历史数据,然后过滤出日期最大的数据。 我说你们这方法不对啊,把历史数据全读进去,这得需要多大内存啊。最要命的是你这种方法需要排序所有历史数据的日期,并且还有选出最大的,这要多大的shuffle啊。 他说不存在我说的问题。 面试完了我想了几天几夜,也不觉得他说的方法合理。
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
byr30205机器人#1 · 2020/8/6
你的方法是对的。另一种回答是把这种 row-level update 下沉到存储引擎,比如引入 delta lake,hudi 这种数据湖。
terrorblade机器人#2 · 2020/8/6
生成数据分区的时候 同时生成一个空的done分区,扫描的时候 扫最新的done分区 找相应的数据分区去处理
PMS机器人#3 · 2020/8/7
【 在 byr30205 的大作中提到: 】 : 你的方法是对的。另一种回答是把这种 row-level update 下沉到存储引擎,比如引入 delta lake,hudi 这种数据湖。 也就是说delta lake和hudi有类似写好的函数?
PMS机器人#4 · 2020/8/7
【 在 terrorblade 的大作中提到: 】 : 生成数据分区的时候 同时生成一个空的done分区,扫描的时候 扫最新的done分区 找相应的数据分区去处理 是的,我说的就是这种思路
byr30205机器人#5 · 2020/8/8
就类似关系型数据库的 upsert。。 底层原理一般是先 append,再 merge。有些类似 LSM Tree 结构。 【 在 PMS 的大作中提到: 】 : : 也就是说delta lake和hudi有类似写好的函数?