我是新手并尝试了解Spark的内部实施。我已经做了一个测试来查看groupByKey
的缩放行为。结果表明,执行时间与每个节点的核心数无关,但如果增加节点数,我可以看到时间大大减少。
我知道这个操作应该是磁盘和网络上的瓶颈。因此,每个节点的核心数量的观察是因为有限的网络和磁盘带宽?如果答案是肯定的话,如果增加节点数,执行时间是否会线性减小,因为带宽会线性增加?如果有人根据@obs.bindable
class Person {
@obs.property
public Name: string;
@obs
.bind(()=>Person.prototyope.Name.FirstName)
.before(()=>Person.prototype.beforeFirstNameChange)
.after(()=>Person.prototype.FirstNameChanged)
.property
public FirstName: string;
@obs.event
public beforeFirstNameChange = () => {
console.log('before first name is changed.');
}
@obs.event
public FirstNameChanged = () => {
console.log('first name is changed.');
}
}
@obs.bindable
class Name{
@obs.property
public Surname: string;
@obs.property
public FirstName: string;
}
let p = new Person();
p.FirstName = 'Jack'; // p.Name.FirstName will change as well.
的实施情况解释它,将非常感激。)
答案 0 :(得分:0)
一般来说groupByKey
受限于:
根据数据分布和群集拓扑,您可以通过增加节点数量来减少总体延迟,但在一天结束时,它无法直接解决上面列举的任何问题。此外,每个密钥必须由一个执行器最终处理。