簡體   English   中英

Spark DF 樞軸錯誤:方法樞軸([類 java.lang.String,類 java.lang.String])不存在

[英]Spark DF pivot error: Method pivot([class java.lang.String, class java.lang.String]) does not exist

我是使用 Spark 數據幀的新手。 我正在嘗試對 Spark(Spark 版本 2.x)使用pivot方法並遇到以下錯誤:

Py4JError:調用 o387.pivot 時出錯。 跟蹤:py4j.Py4JException: Method pivot([class java.lang.String, class java.lang.String]) 不存在

盡管我在這里first使用agg函數,但我真的不需要應用任何聚合。

我的數據框如下所示:

+-----+-----+----------+-----+
| name|value|      date| time|
+-----+-----+----------+-----+
|name1|100.0|2017-12-01|00:00|
|name1|255.5|2017-12-01|00:15|
|name1|333.3|2017-12-01|00:30|

預期的:

+-----+----------+-----+-----+-----+
| name|      date|00:00|00:15|00:30|
+-----+----------+-----+-----+-----+
|name1|2017-12-01|100.0|255.5|333.3|

我正在嘗試的方式:

df = df.groupBy(["name","date"]).pivot(pivot_col="time",values="value").agg(first("value")).show

我在這里有什么錯誤?

問題在於pivot函數中的values="value"參數。 這應該用於要透視的實際值列表,而不是列名。 文檔

values – 將被轉換為輸出 DataFrame 列的值列表。

和一個例子:

 df4.groupBy("year").pivot("course", ["dotNET", "Java"]).sum("earnings").collect() [Row(year=2012, dotNET=15000, Java=20000), Row(year=2013, dotNET=48000, Java=30000)]

對於問題中的示例, values應設置為["00:00","00:15", "00:30"] 但是, values參數通常不是必需的(但會使數據透視更有效),因此您可以簡單地更改為:

df = df.groupBy(["name","date"]).pivot("time").agg(first("value"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM