scala - Spark:联合后减少 RDD 分区
问题描述
尽管使用coalesce(2000)
,以下代码返回一个包含 22000 个分区的 RDD。
private [sparse] def internalEvenProportionPerTargetMultivariate1( labelRdd: RDD[(Double, Int)]): RDDLabeledPoint =
{
val reducedpartsRDDList: Array[RDD[(LabeledPoint, Int, String)]] = preduceParts(proportionForReductionByLabel,labelRdd)
val newRDD=reducedpartsRDDList.tail.foldLeft(reducedpartsRDDList.head){ (rdd1, rdd2)
=> rdd1.union(rdd2) }.coalesce(2000)
new RDDLabeledPoint(newRDD)
}
最初,有一个 RDD 大约有 500 个分区。然后在该方法中将其分解为 44 个子集,preduceParts
并从每个子集中删除一些行。
看起来这reducedpartsRDDList: Array[RDD[(LabeledPoint, Int, String)]]
是一个由 44 个 RDD 组成的数组,每个 RDD 有 500 个分区,并且union
即使在coalesce
. 我究竟做错了什么?
解决方案
推荐阅读
- scala - 未找到参数 i0 的隐含:TypedColumn.Exists
- sql-server - TRY_PARSE 但更快
- python-3.x - 如何在熊猫列的列表中展平多个字典对象?
- python - AWS EBS 上 PostgresSQL 远程数据库的正确连接字符串是什么
- node.js - 代码更改时,带有 nodemon 的 Docker 不会重新加载我的 api
- google-apps-script - Google Apps Script Web App 可以扩展吗?
- .net - .net Janus Gridex,添加多个子行,关注第一行
- javascript - 逗号分隔数字的正则表达式,每个逗号后面可能有 n 个空格
- c - free() 给了我一个错误,从聊天到无效的对话无效
- python - 在python中删除文件名的结尾