当前位置: 首页 > 知识库问答 >
问题:

如何打印RDD的内容?

向实
2023-03-14

我正在尝试将集合的内容打印到Spark控制台。

我有一个类型:

linesWithSessionId: org.apache.spark.rdd.RDD[String] = FilteredRDD[3]

我使用命令:

scala> linesWithSessionId.map(line => println(line))

但这是打印的:

res1:组织。阿帕奇。火花rdd。RDD[单位]=MappedRDD[4]位于map at:19

如何将RDD写入控制台或保存到磁盘,以便查看其内容?

共有3个答案

朱阳晖
2023-03-14

您可以将RDD转换为数据帧,然后显示它。

// 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()

这将显示数据的前20行,因此数据的大小不应成为问题。

+------+---+                                                                    
|    _1| _2|
+------+---+
| apple|  1|
|banana|  2|
|orange| 17|
+------+---+
郦何平
2023-03-14

map函数是一种转换,这意味着Spark在对RDD执行操作之前不会实际评估RDD。

要打印它,可以使用foreach(这是一种操作):

linesWithSessionId.foreach(println)

要将其写入磁盘,您可以使用另存为函数(静态操作)

濮阳旺
2023-03-14

如果要查看RDD的内容,一种方法是使用collect()

myRDD.collect().foreach(println)

但是,当RDD有数十亿行时,这不是一个好主意。使用get()只取几行打印出来:

myRDD.take(n).foreach(println)
 类似资料:
  • 问题内容: 我有一个带有两个标签的图片。我需要打印这些内容。请帮帮我。我如何仅打印此内容,因为我的组件也不同,但是我只需要打印 此内容 。 谢谢。 问题答案: 这是打印任何Swing组件的示例。

  • 问题内容: 我有一个涉及httprequest的错误,有时会发生,所以我想记录HttpGet和HttpPost请求的内容。 所以,让我们说,我这样创建HttpGet: 这是我想要的字符串表示形式: 对于发布请求,我还想获取内容字符串。 在Java for Android中最简单的方法是什么? 问题答案: 您可以使用以下命令打印请求类型: 您可以按此处所述打印所有标题: 要打印所有请求参数,请使用以

  • 如何将的内容打印到屏幕? 实现以下< code >运算符的解决方案 以下是我目前所拥有的,没有单独的功能:

  • 我正在使用jdk 11和虚拟主机样式访问(AWS SDK for Java version 2)在AWS s3 bucket中创建/访问对象,如下所示: 虽然我能够在指定的bucket中创建对象,但我无法打印bucket中的内容/对象列表,尽管在我检查权限时,每个人都有权查看bucket中的对象。错误消息为: 这是s3client的创建方式: 这就是我打印列表的方式: BUCKET\u NAME是

  • 我一直在试验PySpark RDDs的分区和重新分区。 我注意到,当将一个小样本 RDD 从 2 个分区重新分区到 6 个分区时,只是添加了几个空部分。 现在,我想知道这是否也发生在我的真实数据中。 似乎我不能在较大的数据上使用glom()(带有192497行的df)。 因为当我尝试时,什么也没发生。不过这是有道理的,由此产生的印刷品将是巨大的...... 因此 我想打印每个分区,检查它们是否是空

  • 对于Android来说,在java中最简单的方法是什么?