我写了一个简单的代码来连接到cassandra并在scala中获取表值。这是我的代码
def t()={
var cluster:Cluster=connect("127.0.0.1")
println(cluster)
var session:Session=cluster.connect("podv1");
// var tx= session.execute("CREATE KEYSPACE myfirstcassandradb WITH " +
// "replication = {'class':'SimpleStrategy','replication_factor':1}")
var p=session.execute("select data from section_tbl limit 2;")
session.close()
cluster.close
}
虽然创建键空间的东西正在工作(我已经评论过)但是当我试图从表中获取数据时,它给出的错误就像 ResultSet [耗尽:false,列[data(varchar)]] 。我刚刚开始将scala连接到cassandra,所以可能是我在做一些错误或其他什么。关于如何获取数据的任何帮助将是可感知的
答案 0 :(得分:1)
它给出了像ResultSet一样的错误[耗尽:false,列[data(varchar)]]
这不是错误,ResultSet是从execute返回的对象。 exhausted
表示您尚未使用所有行,Columns
表示每列的名称及其类型。
例如,在你的'p'是分配给session.execute的变量的情况下,你可以这样做:
var p = session.execute("select data from section_tbl limit 2;")
println(p.all())
all()
从Cassandra中获取与您的查询相关联的所有行,并将其捕获为List[Row]
。如果你有一个非常大的结果集(在你的情况下你没有,因为你限制为两行),你可能想要迭代ResultSet
,这将允许驱动程序使用分页来检索cassandra一次排成一排排。
ResultSet
实现了java.util.Iteratable<Row>
,因此您可以使用iterable进行所有操作。有关更多操作,请参阅ResultSet
api。