2017-05-26 5 views
0

Ich bin Werte von cassandra Tabelle Kommissionierung und sie in Datensatzes wie folgt zu speichern:Besetzungsliste <Row> zur Liste <T> in java

Dataset query =spark.sql("select url,sourceip,destinationip from traffic_data"); 
List<Row> = query.collectAsList(); 

jetzt habe ich eine POJO Klasse group Variablen als url, SourceIP und destionationip haben.

Is it possible to cast this List<Row> to List<GroupClass>? 
+0

Mögliches Duplikat von [Wie generischen Listentypen in Java werfen?] (Https://stackoverflow.com/questions/905964/how-to-cast-generic -list-types-in-java) –

Antwort

0

Technisch können Sie, aber dies eine ClassCastException zur Laufzeit werfen.

Die beste Vorgehensweise in diesem Fall ist die Verwendung eines Copy Constructor.

0

Ich komme aus Scala, aber ich glaube, dass es einen ähnlichen Weg in Java gibt.

Eine mögliche Lösung whould sein, die folgenden:

val query =spark.sql("select url,sourceip,destinationip from traffic_data").as[GroupClass] 

Nun ist die Abfrage Wert hat den Typ Dataset[GroupClass], so ruft collectAsList() Methode Retruns eine Liste [group]

val list = query.collectAsList(); 

Eine andere Lösung (ich glaube, Sie müssen streams verwenden, um die gleiche Sache in Java zu tun) ist zu map jeder von Liste in einem GroupClass wie folgt:

val query =spark.sql("select url,sourceip,destinationip from traffic_data") 
val list = query.collectAsList(); 
val mappedList = list.map { 
    case Row(url: String,sourceip: String,destinationip: String) => 
    GroupClass(url, sourceip, destinationip) 
} 

ich der Auffassung, dass alle Attribute (url, SourceIP, destinationip) einen String

Sie die GroupedClass zu schaffen haben:

GroupClass(url: String,sourceip: String,destinationip: String) 

Hoffe, dass es

hilft
+0

Kartenfunktion wird als Fehler angezeigt. –

+0

Wenn Sie den obigen Code verwenden, wird dies absolut als Fehler angezeigt, denn wie oben erwähnt, ist dieser Code für scala. Wie auch immer, teile diesen Fehler, damit wir dir helfen können !! –

Verwandte Themen