如何在终端中打印ApacheSpark RDD的内容?

时间:2016-05-29 18:52:19

标签: scala matrix apache-spark

这是我第一次将Scala和ApacheSpark用于项目。当我在终端中运行代码时,我正在尝试打印矩阵的内容,但到目前为止我没有尝试任何工作。

相反,我只能打印出来:

org.apache.spark.mllib.linalg.distributed.MatrixEntry;@71870da7
org.apache.spark.mllib.linalg.distributed.CoordinateMatrix@1dcca8d3

我只是使用println()但是当我使用collect()时,这也没有给出好的结果。

4 个答案:

答案 0 :(得分:1)

默认的toString打印一个类的名称,后跟内存中的地址。

{
  // ...
  "scripts": {
    "dist": "./node_modules/browserify/bin/cmd.js ./src/index.js -o ./dist/bundle.js -t [ babelify --presets [ es2015 ] ]",
    // ...
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.9.0",
    "babelify": "^7.3.0",
    "browserify": "^13.0.1",
    // ...
  }
}

您想要找到一种迭代矩阵并打印每个元素的方法。

答案 1 :(得分:1)

建立在@ zero323评论的基础上(除此之外你想在那里找一个答案吗?):给定一个RDD [SomeType]你可以打电话

 rdd.collect()

 rdd.take(k)

然后,您可以使用常规的toString()方法打印出结果,这些方法取决于rdd内容的类型。因此,如果SomeTypeList[Double],那么

println(s"${rdd.collect().mkString(",")}") 

会给你一个单行逗号分隔的结果输出。

作为@ zero323,另一个考虑因素是:"你真的想要打印出你的rdd的内容吗?"您更有可能只需要摘要 - 例如

println(s"Number of entries in RDD is ${rdd.count()}")

答案 2 :(得分:0)

像这样迭代rdd

rdd.foreach(println)

答案 3 :(得分:0)

scala> val rdd1 = sc.parallelize(List(1,2,3,4))。map(_ * 2)

在RDD中打印数据

阶> rdd1.collect()。的foreach(的println)

输出: 2 4 6 8