scala - 如何使用 mapPartition 等在执行程序内部进行涉及 rdd 的操作?
问题描述
我想做这样的事情:
val myBigRdd2: RDD[_] = ???
myBigRdd1.mapPartition{ dataBlock =>
// operation involving dataBlock and an other RDD
// like myBigRdd2.multiply(dataBlock)
// if myBigRdd2 is a matrix. Or something similar.
}
有没有办法给执行者一个RDD?
我认为Broadcast
onrdd2
行不通,因为它太大了。
因为驱动程序内存会爆炸,所以这样做collect
也不会起作用。grouped
rdd1
还有其他方法吗?
cartesian
工作,但需要永远。
解决方案
您不能将 RDD 传递给 mapPartition,因为这是一个只有驱动程序知道的结构。执行者不能使用 RDD 结构。
推荐阅读
- docker - 动态运行 Docker 容器以在 Kubernetes 中作为 API 服务执行任务?
- zsh - 在 zsh 中使用 comm 和排序
- python - 刚刚安装了 Anaconda 怎么启动 spyder ide 或 pycharm?
- python - 如何将 Python 脚本部署到 Web 应用程序?
- delphi-2009 - Microsoft.XMLDOM xml.load xml.parseError.errorCode 另一个用户的不同结果
- reactjs - 根据分配的角色创建、分配角色给用户和加载菜单
- python - 自动识别数据是否为表格文本格式
- kubernetes - Helm Chart 在容器死亡时定义容器上的 postStart 钩子的行为
- python - 与此应用交互需要 CDK CLI >= 1.16.0
- ios - 如何等待 MPMediaLibrary requestAuthorization 响应