Apache spark 我不知道';Bluemix Spark中的笔记本没有任何结果

Apache spark 我不知道';Bluemix Spark中的笔记本没有任何结果,apache-spark,ibm-cloud,Apache Spark,Ibm Cloud,我尝试在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 va

我尝试在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)
val input = sc.textFile("swift://notebooks.spark/test.csv")
input.take(1) /** shows the first line */
input.foreach(println) /** nothing is displayed */

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

我已经在Scala笔记本的Bluemix上测试了它

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)
val input = sc.textFile("swift://notebooks.spark/test.csv")
input.take(1) /** shows the first line */
input.foreach(println) /** nothing is displayed */
如果要显示RDD的内容,可以使用以下代码

input.take(5).foreach(println) /** shows the first 5 lines */
input.collect().foreach(println) /** shows all lines */
我不知道本地VM是如何设置的,但我认为您必须区分代码是在本地运行还是在集群上运行


请查看此答案以了解更多信息:

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