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