2017-01-12 35 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])。 –