【问题标题】:How to retrieve the column having datatype as "list" from the table of Cassandra?如何从 Cassandra 表中检索数据类型为“列表”的列?
【发布时间】:2017-05-28 03:51:12
【问题描述】:

我正在使用 Scala 与 Cassandra 连接并在其中应用我的查询,我在 Cassandra 中创建了一个简单的表,其中包含两列 row_id 和 row_values。 row_id 的数据类型为“varchar”,row_values 存储元素列表。我在表中插入了一些随机值并想要检索这些值。 创建表:

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 中检索列(列表类型)?

【问题讨论】:

    标签: java scala cassandra cql


    【解决方案1】:

    尝试将类添加到getList 方法:

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

    【讨论】:

    • 这解决了我的问题。我使用的 getList("row_values", string.class) 在 Scala 中不正确,它应该是 getList("row_values", classof[String])。
    【解决方案2】:

    快速阐述: 您指定 java 类。例如,

    val driverDerivedRow = MyRow(row.getString("s"), 
        row.getInt("i"), 
        row.getList("l", classOf[java.lang.Long])
        .asScala.toList.map(Long.unbox)
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 2016-09-19
      • 2017-12-17
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多