我从Bluemix Spark的笔记本中没有获得任何结果。
我从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)时没有结果。这很奇怪。如何获得结果?
在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的内容。