blu*_*sky 120 scala apache-spark
我正在尝试将集合的内容打印到Spark控制台.
我有一个类型:
linesWithSessionId: org.apache.spark.rdd.RDD[String] = FilteredRDD[3]
Run Code Online (Sandbox Code Playgroud)
我使用命令:
scala> linesWithSessionId.map(line => println(line))
Run Code Online (Sandbox Code Playgroud)
但这是印刷的:
res1:org.apache.spark.rdd.RDD [Unit] = MappedRDD [4] at map at:19
如何将RDD写入控制台或将其保存到磁盘,以便查看其内容?
小智 221
如果要查看RDD的内容,可以使用collect()以下方法:
myRDD.collect().foreach(println)
Run Code Online (Sandbox Code Playgroud)
但是,当RDD有数十亿行时,这不是一个好主意.使用take()仅举几个打印出:
myRDD.take(n).foreach(println)
Run Code Online (Sandbox Code Playgroud)
fed*_*gon 48
该map函数是一个转换,这意味着在您对其执行操作之前,Spark实际上不会评估您的RDD .
要打印它,您可以使用foreach(这是一个动作):
linesWithSessionId.foreach(println)
Run Code Online (Sandbox Code Playgroud)
要将其写入磁盘,您可以使用RDD API中的一个saveAs...功能(静止操作)
Noa*_*oah 12
如果您在群集上运行此功能,则println无法打印回您的上下文.您需要将RDD数据带到会话中.为此,您可以将其强制为本地数组,然后将其打印出来:
linesWithSessionId.toArray().foreach(line => println(line))
Run Code Online (Sandbox Code Playgroud)
Wes*_*sam 11
您可以将转换RDD为DataFrame然后show()它.
// For implicit conversion from RDD to DataFrame
import spark.implicits._
fruits = sc.parallelize([("apple", 1), ("banana", 2), ("orange", 17)])
// convert to DF then show it
fruits.toDF().show()
Run Code Online (Sandbox Code Playgroud)
这将显示数据的前20行,因此数据大小不应成为问题.
+------+---+
| _1| _2|
+------+---+
| apple| 1|
|banana| 2|
|orange| 17|
+------+---+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213657 次 |
| 最近记录: |