当我从SO中的许多博客和帖子中读到时,例如this one(在前几段中),引用如下:
不要涉及太多细节,但是当你运行不同时 转换RDD(map,flatMap,filter等),你的 转换代码(闭包)是:
- 在驱动程序节点上序列化,
- 发送到群集中的相应节点,
- 反序列化,
- 最后在节点上执行
醇>
好的,这是我对此的看法:
我在驱动程序中定义了一些自定义转换/操作函数,然后这些自定义函数将序列化到所有执行程序以运行作业。
那么将额外的py文件发送到所有节点有什么意义呢?由于执行者需要的所有内容都会被序列化,所以这里到底发生了什么?
答案 0 :(得分:0)
不确定,但使用spark 2.x和DataFrame API来避免序列化并将scala代码发送到您的节点,而无需在节点上处理额外的python容器。