相关疑难解决方法(0)

Spark:从RDD检索大数据到本地计算机的最佳实践

我在纱线集群中有大RDD(1gb).在使用此群集的本地计算机上,我只有512 MB.我想在本地机器上迭代RDD中的值.我不能使用collect(),因为它会在本地创建太大的数组,这比我的堆更多.我需要一些迭代的方式.有方法iterator(),但它需要一些额外的信息,我无法提供.

UDP:提交给LocalIterator方法

apache-spark

39
推荐指数
3
解决办法
4万
查看次数

为什么foreach没有为驱动程序带来任何东西?

我用spark shell编写了这个程序

val array = sc.parallelize(List(1, 2, 3, 4))
array.foreach(x => println(x))
Run Code Online (Sandbox Code Playgroud)

这打印一些调试语句,但不打印实际数字.

下面的代码工作正常

for(num <- array.take(4)) {
  println(num)
}
Run Code Online (Sandbox Code Playgroud)

我确实理解这take是一个动作,因此会引发火花触发懒惰的计算.

但是foreach应该以同样的方式工作......为什么没有foreach从spark中带回任何东西并开始进行实际处理(退出懒惰模式)

我怎样才能在rdd上工作?

apache-spark

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

apache-spark ×2