Если вы пытаетесь увидеть нисходящие значения в двух столбцах одновременно, этого не произойдет, поскольку каждый столбец имеет свой отдельный порядок.
В приведенном выше фрейме данных вы можете видеть, что как retweet_count, так и favour_count имеют свой собственный порядок. Это касается ваших данных.
>>> import os
>>> from pyspark import SparkContext
>>> from pyspark.streaming import StreamingContext
>>> from pyspark.sql import SparkSession
>>> sc = SparkContext.getOrCreate()
>>> spark = SparkSession(sc)
>>> df = spark.read.format('csv').option("header","true").load("/home/samba693/test.csv")
>>> df.show()
+---------+-------------+--------------+
|full_text|retweet_count|favorite_count|
+---------+-------------+--------------+
| abc| 45| 45|
| def| 50| 40|
| ghi| 50| 39|
| jkl| 50| 41|
+---------+-------------+--------------+
Когда мы применяем порядок на основе двух столбцов, то, что именно происходит, это порядок на основе первого столбца; если есть связь, он принимает во внимание значение второго столбца. Но это может быть не то, что вы видите. Вы видите для сортировки обоих столбцов на основе их суммы.
>>> df.orderBy(["retweet_count", "favorite_count"], ascending=False).show()
+---------+-------------+--------------+
|full_text|retweet_count|favorite_count|
+---------+-------------+--------------+
| jkl| 50| 41|
| def| 50| 40|
| ghi| 50| 39|
| abc| 45| 45|
+---------+-------------+--------------+
Одним из способов решения этой проблемы является добавление нового столбца с суммой этих обоих столбцов и применение порядка к новому столбцу и удаление нового столбца после упорядочения.
>>> from pyspark.sql.functions import expr
>>> df1 = df.withColumn('total',expr("retweet_count+favorite_count"))
>>> df1.show()
+---------+-------------+--------------+-----+
|full_text|retweet_count|favorite_count|total|
+---------+-------------+--------------+-----+
| abc| 45| 45| 90.0|
| def| 50| 40| 90.0|
| ghi| 50| 39| 89.0|
| jkl| 50| 41| 91.0|
+---------+-------------+--------------+-----+
Заказ с использованием нового столбца и удаление его позже
>>> df2 = df1.orderBy("total", ascending=False)
>>> df2.show()
+---------+-------------+--------------+-----+
|full_text|retweet_count|favorite_count|total|
+---------+-------------+--------------+-----+
| jkl| 50| 41| 91.0|
| abc| 45| 45| 90.0|
| def| 50| 40| 90.0|
| ghi| 50| 39| 89.0|
+---------+-------------+--------------+-----+
>>> df = df2.select("full_text","retweet_count","favorite_count")
>>> df.show()
+---------+-------------+--------------+
|full_text|retweet_count|favorite_count|
+---------+-------------+--------------+
| jkl| 50| 41|
| abc| 45| 45|
| def| 50| 40|
| ghi| 50| 39|
+---------+-------------+--------------+
Надеюсь, это поможет!