我用Python编写的Spark工作效果很好,但在将其移植到Scala时遇到了内存压力问题。我的代码中有一个flatMap操作
<div class="repeaterDiv" data-ng-repeat="item in itemArray">
<div class="wrapper">
<img class="imageClass" ng-src="{{item.image}}" src="http://lorempixel.com/300/200" />
<div class="corner-ribbon bottom-right sticky green shadow">Changed</div>
</div>
</div>
在Python中:
def make_combinations(x:(String, Iterable[String])) = {
x._2
.toSeq
.combinations(2)
.map({case Seq(a,b) => if (a<b) List(a,b,1) else List(b,a,1)})
.map(_.mkString(","))
}
我可以使用生成器在Python中完成这个确切的功能,它没有问题。然而,使用Scala,我会遇到内存问题,因为它可以生成比机器可以容纳在内存中的数据更多的数据,但任何想法为什么Spark不能像在Python中那样在节点周围传播数据。我在斯卡拉搞砸了懒惰吗?感谢
修改 我在ec2上使用spark 1.6并使用spark standalone。有问题的可迭代长度可达一亿。