在通过scala访问cassandra表的值时,ResultSet耗尽错误

时间:2016-01-05 06:18:01

标签: scala cassandra

我写了一个简单的代码来连接到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,所以可能是我在做一些错误或其他什么。关于如何获取数据的任何帮助将是可感知的

1 个答案:

答案 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。