Pyspark orderBy 在对多列进行排序时给出不正确的结果
Pyspark orderBy giving incorrect results when sorting on more than one column
概述:我正在尝试按多列对 spark DF 进行排序,但生成的 DF 仅按一列进行排序。
预期结果:DF 在每个公司内按字母顺序排列名称。
玩具DF:
l = [('Alice', 1,'funcompany'),
('Bob',5,'funcompany'),
('Jane',30,'Amazon'),
('Kenneth',2,'lameplace'),
('Dill',10,'funcompany'),
('Zeb',0,'lameplace'),
('Archie',50,'funcompany'),
('Debra',0,'funcompany'),
('Vicky',24,'funcompany'),
('Kanye',40,'lameplace')]
datis=sqlContext.createDataFrame(l, ['name', 'age','company'])
排序:
colss = ["name", "company"]
datis.orderBy(colss,ascending=[1,0]).show()
尝试使用以下代码
cols = ["name", "company"]
datis.orderBy(cols, ascending=False)
添加
import pyspark.sql.functions as F
并改变
colss = ["name", "company"]
datis.orderBy(colss,ascending=[1,0]).show()
为了
datis.orderBy(F.desc('company'), F.asc('name')).show()
给出了想要的结果
概述:我正在尝试按多列对 spark DF 进行排序,但生成的 DF 仅按一列进行排序。
预期结果:DF 在每个公司内按字母顺序排列名称。
玩具DF:
l = [('Alice', 1,'funcompany'),
('Bob',5,'funcompany'),
('Jane',30,'Amazon'),
('Kenneth',2,'lameplace'),
('Dill',10,'funcompany'),
('Zeb',0,'lameplace'),
('Archie',50,'funcompany'),
('Debra',0,'funcompany'),
('Vicky',24,'funcompany'),
('Kanye',40,'lameplace')]
datis=sqlContext.createDataFrame(l, ['name', 'age','company'])
排序:
colss = ["name", "company"]
datis.orderBy(colss,ascending=[1,0]).show()
尝试使用以下代码
cols = ["name", "company"]
datis.orderBy(cols, ascending=False)
添加
import pyspark.sql.functions as F
并改变
colss = ["name", "company"]
datis.orderBy(colss,ascending=[1,0]).show()
为了
datis.orderBy(F.desc('company'), F.asc('name')).show()
给出了想要的结果