使用数据框在pyspark中获取列post group by
Posted
技术标签:
【中文标题】使用数据框在pyspark中获取列post group by【英文标题】:get columns post group by in pyspark with dataframes 【发布时间】:2020-01-16 08:50:16 【问题描述】:我看到了几篇与我的问题相关的帖子 post1 和 post2。但是,在遵循 post1 解决方案时,我遇到了以下错误。
joinedDF = df.join(df_agg, "company")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/spark/python/pyspark/sql/dataframe.py", line 1050, in join
jdf = self._jdf.join(other._jdf, on, how)
AttributeError: 'NoneType' object has no attribute '_jdf'
整个代码sn-p
df = spark.read.format("csv").option("header", "true").load("/home/ec2-user/techcrunch/TechCrunchcontinentalUSA.csv")
df_agg = df.groupby("company").agg(func.sum("raisedAmt").alias("TotalRaised")).orderBy("TotalRaised", ascending = False).show()
joinedDF = df.join(df_agg, "company")
【问题讨论】:
【参考方案1】:在第二行的末尾有 .show
df_agg = df.groupby("company").agg(func.sum("raisedAmt").alias("TotalRaised")).orderBy("TotalRaised", ascending = False).show()
像这样删除它:
df_agg = df.groupby("company").agg(func.sum("raisedAmt").alias("TotalRaised")).orderBy("TotalRaised", ascending = False)
你的代码应该可以工作。
您对该 df 使用了一个操作并将其分配给 df_agg 变量,这就是为什么您的变量是 NoneType(在 python 中)或 Unit(在 scala 中)
【讨论】:
非常感谢 - 我没有遇到任何错误 - 但是加入后我失去了 df_agg 中发生的 groupby 和聚合 加入后你松了 TotalRaised 列?请标记答案 不,我松开了 groupby 和 orderBy 操作 查看您的代码,这种行为是正常的。你有“df”变量,它是原始数据,之后你有聚合的 df_agg。之后,您将使用 df_agg(聚合)加入第一个(“df”,非聚合),因此对于“df”中的每一行,您将带来 TotalRaised 列。如果您只想要我们 df_agg 的汇总数据以上是关于使用数据框在pyspark中获取列post group by的主要内容,如果未能解决你的问题,请参考以下文章