我有一个包含300万行的cassandra表。现在我试图获取所有行并将它们写入几个csv文件。我知道不可能执行select * from mytable
。有人可以告诉我怎么做这个吗?
或者有没有办法在n
行之前读取行n
行而不指定任何where
条件?
答案 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万然后指定它)......