查看Spark Dataframe列的内容

50

我正在使用Spark 1.3.1。

我尝试在Python中查看Spark dataframe列的值。对于一个Spark dataframe,我可以使用df.collect()来查看dataframe的内容,但是我找不到类似的方法来查看Spark dataframe列。

例如,dataframe df 包含名为'zip_code'的列。因此我可以使用df['zip_code'],但它会返回一个pyspark.sql.dataframe.Column类型,但我找不到一种方法来查看df['zip_code']中的值。

3个回答

57

您可以访问底层的 RDD 并对其进行映射。

df.rdd.map(lambda r: r.zip_code).collect()

如果您不介意使用Row对象来包装结果,也可以使用select

df.select('zip_code').collect()

最后,如果您只想检查内容,则show方法就足够了:

df.select('zip_code').show()

13
这里所讨论的问题不是“如何查看Dataframe的内容,只查看其中一列?”,而是“假设有一个类型为Column的对象,没有任何类型为Dataframe的对象,如何查看该Column的内容?” - Jordan Pilat
11
你不需要。Column并不受任何执行计划的限制,它只是一个符号而已。 - zero323
3
好的回答!为了澄清,Column 本身并不包含任何数据,它只代表了一个或多个特定 DataFrame 列的一系列零个或多个转换。因此,在没有上下文的情况下引用它是没有意义的,必须在生成它的 DataFrame 上下文中使用。对吧? - Jordan Pilat
4
@JordanPilat 它可以从一个表达式构建,但在一天结束时它本身没有意义。考虑这个:$"foo"。它创建了一个 ColumnName 类的对象,该类是 Column 的子类。单独它没有意义。我可以使用不同的数据框来评估它并获得不同的结果(或异常)。如果你曾经使用过 R,请考虑 formulas - zero323

8
您可以简单地编写以下代码:
df.select('your column's name').show()

在您这种情况下,它将是:
df.select('zip_code').show()

5

查看完整内容:

df.select("raw").take(1).foreach(println)

(show会显示概述信息)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接