使用 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 文件
pyspark:groupby 和聚合 avg 和 first 在多个列上
在 pyspark 中,是不是可以使用 1 个 groupBy 进行 2 个聚合?