当前位置:  开发笔记 > 编程语言 > 正文

我如何在PySpark的DataFrame中按顺序排序?

如何解决《我如何在PySpark的DataFrame中按顺序排序?》经验,为你挑选了1个好方法。

类似于:

order_items.groupBy("order_item_order_id").count().orderBy(desc("count")).show()

我试过了:

order_items.groupBy("order_item_order_id").sum("order_item_subtotal").orderBy(desc("sum")).show()

但这会给出一个错误:

Py4JJavaError:调用o501.sort时发生错误.:org.apache.spark.sql.AnalysisException:无法解析'sum'给定的输入列order_item_order_id,SUM(order_item_subtotal#429);

我也尝试过:

order_items.groupBy("order_item_order_id").sum("order_item_subtotal").orderBy(desc("SUM(order_item_subtotal)")).show()

但我得到同样的错误:

Py4JJavaError:调用o512.sort时发生错误.:org.apache.spark.sql.AnalysisException:无法解析'SUM(order_item_subtotal)'给定输入列order_item_order_id,SUM(order_item_subtotal#429);

执行时我得到了正确的结果:

order_items.groupBy("order_item_order_id").sum("order_item_subtotal").orderBy(desc("SUM(order_item_subtotal#429)")).show()

但是,在看到Spark附加到总和列名称的数字,即#429之后,这是后验的.

有没有办法获得相同的结果,但先验,不知道将附加哪个数字?



1> architectoni..:

您应该为列使用别名:

import pyspark.sql.functions as func

order_items.groupBy("order_item_order_id")\
           .agg(func.sum("order_item_subtotal")\
                .alias("sum_column_name"))\
           .orderBy("sum_column_name")

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有