查看 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 的行

spark 统计Dataframe 列的中空值比例

Spark DataFrame列的合并与拆分

计算Spark DataFrame中每列的内核密度

Spark/Scala:对带有数组类型列的 DataFrame 中的某些组件的操作

基于不同类型spark 1.6列的Spark join dataframe