Spark DataFrame使用变量实现OrderBy排序失败问题求助
Spark DataFrame用变量指定排序列的正确姿势
你之前的代码报错,是因为orderBy方法根本没有cols这个参数,直接传列名变量就行,下面给你几种可行的写法:
基础写法:直接传字符串变量
如果你的变量就是列名的字符串,直接丢给orderBy就行,再搭配ascending指定排序方向:
city_col = "city_col" # 正确写法 sdf_ordered = sdf.orderBy(city_col, ascending=True)
进阶写法:结合col()函数
要是你需要对列做处理(比如转小写、取别名)后再排序,用col()包裹变量更灵活:
from pyspark.sql.functions import col city_col = "city_col" sdf_ordered = sdf.orderBy(col(city_col), ascending=True)
多列排序场景
如果要按多个变量指定的列排序,把变量放进列表里,ascending也可以对应传布尔值列表控制每列的方向:
city_col = "city_col" age_col = "age" # city_col升序,age_col降序 sdf_ordered = sdf.orderBy([city_col, age_col], ascending=[True, False])
内容的提问来源于stack exchange,提问作者Dylan García
相关产品推荐
相关产品推荐

