如何在使用map或split(pyspark)后查看RDD的内容?

时间:2018-02-19 21:41:09

标签: python pyspark

我正在尝试查看

的返回值的内容
labID = fields.map(lambda x: x.split('ID')(1).trim())

当我这样做时:

print(labID) 

我看到的是:

  

PythonRDD[97] at RDD at PythonRDD.scala:48

我在Scala中看到了这个例子,但我找不到pyspark的例子。 Scala示例:

myRDD.collect().foreach(println)  or myRDD.take(n).foreach(println)

我如何使用pyspark执行此操作?

1 个答案:

答案 0 :(得分:1)

当您致电collect()take()时,您会收到rdd中的元素列表。然后,您可以像打开任何普通的python列表一样打印这些值。

由于collect()费用昂贵且速度慢,我建议您先尝试一下数据样本,以确保其正确无误:

labID = fields.map(lambda x: x.split('ID')[1].trim())
labID_sample = labID.take(5)  # returns the first 5 elements in the rdd as a list

print(labID_sample)  # print the list

如果您对结果看起来正确感到满意,那么您可以抓住整个事情:

labID_all = labID.collect()  # returns all elements in the rdd as a list
print(labID_all)

请注意,这些操作会将数据带回本地内存,通过主节点。如果您有大量数据,这可能会非常慢或可能会失败。在这种情况下,您应该考虑使用saveAsTextFile()将rdd写入磁盘。