使用 pyspark 在 groupBy 之后保存数据框视图

Posted

技术标签:

【中文标题】使用 pyspark 在 groupBy 之后保存数据框视图【英文标题】:Save a dataframe view after groupBy using pyspark 【发布时间】:2020-12-03 01:56:01 【问题描述】:

我的家庭作业让我很难使用 pyspark。在 groupBy 之后,我对我的“df2”有这样的看法:

 df2.groupBy('years').count().show()
+-----+-----+
|years|count|
+-----+-----+
| 2003|11904|
| 2006| 3476|
| 1997| 3979|
| 2004|13362|
| 1996| 3180|
| 1998| 4969|
| 1995| 1995|
| 2001|11532|
| 2005|11389|
| 2000| 7462|
| 1999| 6593|
| 2002|11799|
+-----+-----+

每次将其保存(然后使用 pandas 加载)到文件的尝试都会返回我使用 pypspark 读取的原始源数据文本文件表单及其原始列和属性,现在只是它的 .csv 文件,但这不是重点。 我能做些什么来克服这个问题? 出于您的考虑,我在代码开头没有使用 SparkContext 函数,只是简单的“read”和“groupBy”。

【问题讨论】:

【参考方案1】:

df2.groupBy('years').count().write.csv("sample.csv")

df3=df2.groupBy('years').count()
df3.write.csv("sample.csv")

他们都会在你的工作目录中创建sample.csv

【讨论】:

【参考方案2】:

您可以将结果分配到新的数据框results,然后将结果写入csv 文件。请注意,有两种方法可以输出 csv。如果你使用 spark,你需要使用.coalesce(1) 来确保只输出一个文件。另一种方法是转换.toPandas(),使用pandas DataFrame的to_csv()函数。

results = df2.groupBy('years').count()

# writes a csv file "part-xxx.csv" inside a folder "results"
results.coalesce(1).write.csv("results", header=True)

# or if you want a csv file, not a csv file inside a folder (default behaviour of spark)
results.toPandas().to_csv("results.csv")

【讨论】:

以上是关于使用 pyspark 在 groupBy 之后保存数据框视图的主要内容,如果未能解决你的问题,请参考以下文章

与 groupBy 聚合后将 pyspark 数据帧保存为 csv 文件

将groupBy聚合为csv文件后保存pyspark数据帧

pyspark:groupby 和聚合 avg 和 first 在多个列上

在 pyspark 中,是不是可以使用 1 个 groupBy 进行 2 个聚合?

如何在 Pyspark 中使用 groupby 和数组元素?

pyspark groupby 使用 String groupby 键在输出中生成多行