关于ibm cloud:在Bluemix Spark中我没有从笔记本中得到任何结果

I don't get any result from notebook in Bluemix Spark

一旦我可以运行它并从本地虚拟机获得正确的结果,我便试图在Bluemix Spark服务中执行我的Scala代码。当我在Bluemix Spark中运行它时,我在笔记本中无法获得任何响应。

1
2
3
4
5
6
7
8
9
10
11
12
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)却没有结果。真奇怪。如何获得结果?


我已经在Scala笔记本中的Bluemix上对其进行了测试。

1
2
3
val input = sc.textFile("swift://notebooks.spark/test.csv")
input.take(1) /** shows the first line */
input.foreach(println) /** nothing is displayed */

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

1
2
input.take(5).foreach(println) /** shows the first 5 lines */
input.collect().foreach(println) /** shows all lines */

我不知道如何设置本地VM,但是我认为您必须区分在本地运行代码还是在群集上运行代码。

请查看此答案以获取更多信息:如何打印RDD的内容?