2017-12-01 1 views
-1

Ich möchte einen Datenrahmen in Spark mit Hilfe von scala umformen. Ich fand die meisten Beispielanwendungen groupBy und pivot. In meinem Fall möchte ich groupBy nicht verwenden. Dies ist, wie meine Datenrahmen sieht aus wieBild von Spalte zu Zeile in Scala umformen

tagid   timestamp value 
1  1 2016-12-01 05:30:00  5 
2  1 2017-12-01 05:31:00  6 
3  1 2017-11-01 05:32:00  4 
4  1 2017-11-01 05:33:00  5 
5  2 2016-12-01 05:30:00 100 
6  2 2017-12-01 05:31:00 111 
7  2 2017-11-01 05:32:00 109 
8  2 2016-12-01 05:34:00 95 

Und ich möchte, dass meine Datenrahmen so aussehen,

  timestamp 1 2 
1 2016-12-01 05:30:00 5 100 
2 2017-12-01 05:31:00 6 111 
3 2017-11-01 05:32:00 4 109 
4 2017-11-01 05:33:00 5 NA 
5 2016-12-01 05:34:00 NA 95 

i verwendet Schwenk ohne groupBy und es wirft Fehler.

df.pivot("tagid") 

error: value pivot is not a member of org.apache.spark.sql.DataFrame.

Wie konvertiere ich das? Vielen Dank.

+0

'pivot' Prüfung können erfordert [RelationalGroupedDataset] (http://spark.apache.org/docs/ Letzte/api/scala/index.html # org.apache.spark.sql.RelationalGroupedDataset) und daher 'groupBy'. Es ist zu sagen, dass du keine andere Wahl hast als "groupBy" ** vor "pivot". –

+0

Danke. Gibt es einen anderen Ansatz zur Umgestaltung des Datenrahmens als die Pivoting-Methode? Eigentlich funktionierte groupBy und pivot gut für mich. Aber ich würde immer noch gerne wissen, dass andere Ansätze möglich sind – Jonreyan

+0

Ich denke nicht. Das Problem sieht gut aus für 'pivot' (und so' groupBy'). –

Antwort

0

Die folgenden Schritte sollten Ihr Problem lösen.

df.groupBy("timestamp").pivot("tagId").agg(first($"value")) 

sollten Sie letzten Datenrahmen haben als

+-------------------+----+----+ 
|timestamp   |1 |2 | 
+-------------------+----+----+ 
|2017-11-01 05:33:00|5 |null| 
|2017-11-01 05:32:00|4 |109 | 
|2017-12-01 05:31:00|6 |111 | 
|2016-12-01 05:30:00|5 |100 | 
|2016-12-01 05:34:00|null|95 | 
+-------------------+----+----+ 

für mehr Informationen Sie databricks blog

+0

Interessant, da die Lösung gegen ... _ ist "In meinem Fall möchte ich groupBy nicht verwenden." _ :) –