6

私はSpark Using Windowではrow_number()partitionByを作成しましたが、デフォルトの昇順ではなく降順で並べ替えたいと思います。ここに私の作業コードは次のとおりです。Spark SQL Row_number()PartitionBy Sort Desc

from pyspark import HiveContext 
from pyspark.sql.types import * 
from pyspark.sql import Row, functions as F 
from pyspark.sql.window import Window 

data_cooccur.select("driver", "also_item", "unit_count", 
    F.rowNumber().over(Window.partitionBy("driver").orderBy("unit_count")).alias("rowNum")).show() 

私にこの結果を与えること:

+------+---------+----------+------+ 
|driver|also_item|unit_count|rowNum| 
+------+---------+----------+------+ 
| s10|  s11|   1|  1| 
| s10|  s13|   1|  2| 
| s10|  s17|   1|  3| 

そして、ここで私が降順する)(DESCを追加します。

data_cooccur.select("driver", "also_item", "unit_count", F.rowNumber().over(Window.partitionBy("driver").orderBy("unit_count").desc()).alias("rowNum")).show() 

をし、このエラーを取得します:

AttributeError: 'WindowSpec' object has no attribute 'desc'

私は何をしていますか?ここで間違っている?

+0

from pyspark.sql.functions import col F.rowNumber().over(Window.partitionBy("driver").orderBy(col("unit_count").desc()) 

またはスタンドアロン機能:あなたは、カラム上のいずれかの方法を使用することができます。 – lambruscoAcido

答えて

12

descは、ウィンドウ定義ではなく列に適用する必要があります。 (2.2.0)私が代わりに `rowNumber`の` row_number`を使用する必要が私のPySparkで

from pyspark.sql.functions import desc 

F.rowNumber().over(Window.partitionBy("driver").orderBy(desc("unit_count")) 
関連する問題