我从Bluemix Spark的笔记本中没有获得任何结果。

12 浏览
0 Comments

我从Bluemix Spark的笔记本中没有获得任何结果。

尝试在Bluemix Spark服务中执行我的Scala代码,当我在本地虚拟机上运行并得到正确的结果时。当我在Bluemix Spark中运行时,无法在笔记本中获得任何响应。

import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.linalg.distributed.RowMatrix
import org.apache.spark.mllib.linalg.Matrix
val input = sc.textFile("swift://notebooks.spark/pca.csv")
val header = input.first()
val inputData = input.filter(x => x != header).map(line=>line.split(','))
val inputVector = input.map{d=>
  Vectors.dense(
    d(1).toDouble, d(2).toDouble, d(3).toDouble, d(4).toDouble, d(5).toDouble, d(6).toDouble,
    d(7).toDouble, d(8).toDouble, d(9).toDouble, d(10).toDouble, d(11).toDouble)}
val rowMatrix = new RowMatrix(inputVector)
val pca: Matrix = rowMatrix.computePrincipalComponents(5)

当我执行intput.take(2)时,我可以得到良好的结果,但执行input.foreach(println)时没有结果。这很奇怪。如何获得结果?

0
0 Comments

在Bluemix Spark的Scala笔记本中,我进行了测试。以下是代码:

val input = sc.textFile("swift://notebooks.spark/test.csv")
input.take(1) /** 显示第一行 */
input.foreach(println) /** 没有显示任何内容 */

如果要显示RDD的内容,可以使用以下代码:

input.take(5).foreach(println) /** 显示前5行 */
input.collect().foreach(println) /** 显示所有行 */

我不知道你的本地虚拟机的设置情况,但我认为你需要区分在本地还是在集群上运行代码。

查看这个答案获取更多信息:[如何打印RDD的内容?](https://stackoverflow.com/questions/23173488)

嗨,Sven,谢谢你的回复。我可以得到执行println(pca.toString)的正确结果。

问题出现的原因是没有正确显示RDD的内容。解决方法是使用take()foreach()函数来显示RDD的内容。

0