2017-05-26 49 views
0

我從卡桑德拉桌上拿起值和數據集中存儲他們這樣的:演員名單<Row>列出<T>在java中

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

現在我已經有變量作爲網址,SOURCEIP和destionationip一個POJO類group類。

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

的可能的複製[如何在Java中投泛型列表類型?(https://stackoverflow.com/questions/905964/how-to-cast-generic -list-types-in-java) –

回答

0

從技術上講,你可以,但是這會在運行時拋出ClassCastException

在這種情況下,最佳做法是使用Copy Constructor

0

我來自斯卡拉,但我確實相信在java中有類似的方法。

一種可能的方案對子級是下列:

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

查閱查詢值的類型爲Dataset[GroupClass],因此調用collectAsList()方法retruns一個列表[group類]

val list = query.collectAsList(); 

另一種解決方案(我想你必須使用streams做同樣的事情在java)是map每個從列表中GroupClass這樣的:

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) 
} 

我認爲所有的屬性(URL,SOURCEIP,destinationip)具有String

你必須創建GroupedClass

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

希望它可以幫助

+0

映射函數顯示爲錯誤。 –

+0

如果您使用上面的代碼,它將絕對顯示爲錯誤,因爲正如我上面所說的,此代碼是針對scala的。無論如何,分享這個錯誤,以便我們可以幫助你! –