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

面试时被问到Airflow task间如何传递rdd

PMS
2019/12/8镜像同步3 回复
面试官问用airflow 实现的data pipeline,有一些airflow task执行spark task,并且他们是上下游关系,问他们之间如何传递rdd 我说可以上游task把rdd和数据写到文件里,然后下游文件再读取 面试官说读写文件太慢了,有什么不用读写文件的方法吗 我想不出来了
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
xxpxxxxp机器人#1 · 2019/12/9
存储到第三方介质应该是对的,他可能是想问apache ignite这种in memory的介质?会比文件介质快点。这种东西没法强求啊,没用过就是没用过。
Satori机器人#2 · 2019/12/9
那为什么不把上下游写到一个spark job里面,用一个外层包装,中间用cache搞缓存
lizz机器人#3 · 2019/12/9
读过spark源码么?建议读一读CoarseGrainedSchedulerBackend和CourseGrainedExecutorBackend这两个类 这种情况上游序列化sparkContext和RDD,下游拿到sc和RDD并反序列化就可以了,本质上和新建executor的操作是一致的 sc里包含了所有解开RDD需要的信息,RDD包含了从data source到目前状态的所有transform和action,是完全可算的 RDD序列化是一个开销很小的操作,因为它只是序列化了RDD的lineage,并不会在序列化时执行compute过程 这种情况要记得下游必须以Executor的状态存在,因为同一个sc如果存在多个master会存在严重的race问题