2017-01-12 32 views
4

我正在使用Scala與Cassandra連接,並在其中應用我的查詢,我在Cassandra中創建了一個具有兩列row_id和row_values的簡單表。 row_id的數據類型爲「varchar」,row_values存儲元素列表。我在表格中插入一些隨機值並想要檢索這些值。 爲了創建表:如何從Cassandra表中檢索數據類型爲「list」的列?

CREATE TABLE Matrix1(row_id VARCHAR PRIMARY KEY, row_values LIST<VARCHAR>); 

用於插入表:

INSERT INTO Matrix1(row_id, row_values) VALUES ('abcd3', ['dsf23', 'fsf1','dsdf1']); 

現在我想要檢索值,並將其使用Scala的打印,我用一個代碼來查詢保存值

val results: ResultSet = session.execute("SELECT * FROM Matrix1 where row_id = 'abcd3'") 

現在我想打印「row_id」和「row_values」

var rowid: String = null 
var rowval: List[String] = null 
for (row <- results) { 
     rowid = row.getString("row_id") 
     rowval = row.getList("row_values") 
     } 

與此代碼我正在獲取「rowid」中的值,因爲它是一個字符串,但「rowval」有錯誤。我如何從ResultSet中檢索列(列表類型)?

回答

3

嘗試添加類getList方法:

row.getList("row_values", classOf[String]) 
+0

這解決了我的問題。我使用的是getList(「row_values」,string.class),它在Scala中不正確,它應該是getList(「row_values」,classof [String])。 –