获取cassandra中的所有行

时间:2014-05-19 19:04:26

标签: cassandra

我有一个包含300万行的cassandra表。现在我试图获取所有行并将它们写入几个csv文件。我知道不可能执行select * from mytable。有人可以告诉我怎么做这个吗?

或者有没有办法在n行之前读取行n行而不指定任何where条件?

3 个答案:

答案 0 :(得分:10)

据我所知,驱动程序端的cassandra 2.0 '的一个改进是自动分页。你可以这样做:

Statement stmt = new SimpleStatement("SELECT * FROM images LIMIT 3000000");
stmt.setFetchSize(100);
ResultSet rs = session.execute(stmt);

// Iterate over the ResultSet here

更多阅读Improvements on the driver side with Cassandra 2.0

您可以找到驱动程序here

答案 1 :(得分:2)

您可以使用Pig读取数据并将其存储到HDFS中,然后将其作为单个文件复制出来:

猪:

data = LOAD 'cql://your_ksp/your_table' USING CqlStorage();
STORE data INTO '/path/to/output' USING PigStorage(',');

从OS shell:

hadoop fs -copyToLocal hdfs://hadoop_url/path/to/output /path/to/local/storage

答案 2 :(得分:1)

默认情况下使用select语句只能获得100000条记录..所以如果你必须检索记录,你必须指定限制..

Select * from tablename LIMIT 10000000(在你的情况下,300万然后指定它)......