我有这个代码
df.coalesce(40)
check: function() {
for (var i = 0; i < this.aliens.length; i++) {
var item = this.aliens[i];
if ((bullet.lockedXPos >= item.xPos) && (bullet.lockedXPos <= item.xPos + this.size) && (bullet.yPos >= item.yPos) && (bullet.yPos <= item.yPos + this.size)) {
item.hit = true;
bullet.hidden = true;
while (bullet.yPos >= 0) {};
bullet.hidden = false;
}
}
},
不是打印40,我在做错什么吗?
答案 0 :(得分:1)
尝试执行以下操作:
df_new=df.coalesce(40)
print(" after coalisce getting nb partition " + str(df_new.rdd.getNumPartitions()))
Coalesce返回新的rdd而不是就地更改。
答案 1 :(得分:0)
coalesce 方法将为您返回转换后的数据框。它不会修改原始数据框。应用合并转换后,必须获得分区数。
例如,在8核计算机上运行的Spark Shell上,返回以下输出。
func getUserInfo(forUserId forId: String, handler: @escaping (User) -> ()) {
REF_USERS.child(forId).observe(.value, with: { (snapshot) in
//..... handle snapshot
let user = User(uid: uid, dictionary: dictionary)
handler(user)
}) { (error) in
print(error.localizedDescription)
}
}//end func
应用合并后,将获得所需的输出
scala> df.rdd.getNumPartitions
res3: Int = 8
答案 2 :(得分:0)
我建议您先了解一下Spark体系结构,然后再尝试了解不可变对象的概念。这将帮助您更好地理解其他用户上面提供的响应。