【问题标题】:I don't get any result from notebook in Bluemix Spark我没有从 Bluemix Spark 中的笔记本得到任何结果
【发布时间】:2015-12-03 10:21:15
【问题描述】:

我尝试在 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) 没有结果。真奇怪。我怎样才能得到结果?

【问题讨论】:

    标签: apache-spark ibm-cloud


    【解决方案1】:

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

    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 是如何设置的,但我认为您必须区分在本地运行代码还是在集群上运行代码。

    请查看此答案以获取更多信息:How to print the contents of RDD?

    【讨论】:

    • 嗨,斯文,感谢您的回复。我可以得到执行println(pca.toString)的正确结果。
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2023-04-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多