查看 Spark Dataframe 列的内容
Posted
技术标签:
【中文标题】查看 Spark Dataframe 列的内容【英文标题】:Viewing the content of a Spark Dataframe Column 【发布时间】:2015-09-16 09:57:56 【问题描述】:我使用的是 Spark 1.3.1。
我正在尝试在 Python 中查看 Spark 数据框列的值。使用 Spark 数据框,我可以通过 df.collect()
查看数据框的内容,但据我所知,对于 Spark 数据框列没有这种方法。
例如,数据框 df
包含名为 'zip_code'
的列。所以我可以做df['zip_code']
,它会变成pyspark.sql.dataframe.Column
类型,但我找不到查看df['zip_code']
中的值的方法。
【问题讨论】:
【参考方案1】:您可以访问底层RDD
并对其进行映射
df.rdd.map(lambda r: r.zip_code).collect()
如果您不介意使用Row
对象包装的结果,您也可以使用select
:
df.select('zip_code').collect()
最后,如果你只是想检查内容,那么show
方法就足够了:
df.select('zip_code').show()
【讨论】:
这里有问题的问题不是,“如何查看Dataframe的内容,而只有一列它?”,而是 “给定一个 Column 类型的对象,并且没有 Dataframe 类型的对象,我如何查看它的内容列? @JordanPilat 你没有。Column
不受任何执行计划的限制。它只不过是一个符号。
好答案!澄清一下,Column
本身不包含任何数据,仅表示 1 或更多 特定 DataFrame
列的一系列 0 或更多 转换。因此,在生成它的DataFrame
的上下文之外引用它是没有意义的。对吗?
@JordanPilat 它可以从表达式构造,但归根结底,它本身没有任何意义。考虑一下:$"foo"
。它创建了一个ColumnName
类的对象,它是Column
的子类。单独它没有任何意义。我可以使用不同的 DF 对其进行评估并获得不同的结果(或异常)。如果您曾经使用过 R,请考虑 formulas
。【参考方案2】:
查看完整内容:
df.select("raw").take(1).foreach(println)
(show
将向您展示概览)。
【讨论】:
【参考方案3】:你可以简单地写:
df.select('your column's name').show()
在您的情况下,它将是:
df.select('zip_code').show()
【讨论】:
以上是关于查看 Spark Dataframe 列的内容的主要内容,如果未能解决你的问题,请参考以下文章
Spark Hive:通过另一个 DataFrame 的列的值过滤一个 DataFrame 的行