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()

给出了想要的结果