获取cassandra中的所有行

获取cassandra中的所有行,cassandra,Cassandra,我有一个包含300万行的cassandra表。现在我正在尝试获取所有行并将它们写入几个csv文件。我知道无法从mytable执行选择*。有人能告诉我怎么做吗 或者,是否有任何方法可以按n行读取行n行,而不指定任何where条件?正如我所知,cassandra 2.0“驾驶员侧”的一个改进是自动分页。您可以这样做: Statement stmt = new SimpleStatement("SELECT * FROM images LIMIT 3000000"); stmt.setFetchSiz

我有一个包含300万行的cassandra表。现在我正在尝试获取所有行并将它们写入几个csv文件。我知道无法从mytable执行
选择*
。有人能告诉我怎么做吗


或者,是否有任何方法可以按
n
行读取行
n
行,而不指定任何
where
条件?

正如我所知,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
更多阅读


您可以找到驱动程序。

默认情况下,使用select语句只能获得100000条记录。。因此,在这之后,如果您必须检索记录,则必须指定限制


Select*from tablename LIMIT 10000000
(在您的情况下,请指定300万).

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

猪:

data = LOAD 'cql://your_ksp/your_table' USING CqlStorage();
STORE data INTO '/path/to/output' USING PigStorage(',');
从操作系统外壳:

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

这是可能的。但你不应该。您应该重新考虑您的数据架构。谢谢。我很高兴听到有可能做到这一点。我可以知道怎么做吗?我知道我可能需要重新考虑我的数据模式。但是现在已经太晚了,重新收集数据需要大约3个月的时间。如果一次获取太多行,您将得到
rpc\u timeout
error增加读取请求超时似乎不是一个好方法。在cassandra中有了一个合适的数据模型,您的应用程序现在应该使用cassanda分区键并为每个分区执行select。听起来这样可以解决问题。我试试看。谢谢。性能差,因为群集扫描已满。但它可以用来转储数据。@ubombi我完全同意你的看法。另外,由于分页是在客户端完成的,所以在获取结果时添加的记录不会被检索。对不起,我不熟悉Pig。但我肯定会学习并尝试的。谢谢。Pig可能是Cassandra中最常用的数据加载和探索机制。它编译成mapreduce并无缝地提交给Hadoop。