第一:我知道在Cassandra进行全面扫描并不是一个好主意,但是,目前,这就是我需要的.
当我开始寻找像这样做的东西时,我读到人们说不可能在卡桑德拉进行全面扫描而且他没有做这种事情.
不满意,我一直在寻找,直到找到这篇文章:http: //www.myhowto.org/bigdata/2013/11/04/scanning-the-entire-cassandra-column-family-with-cql/
看起来很合理,我试一试.因为我将只执行一次全扫描,时间和性能不是问题,我编写了查询并将其放在一个简单的Job中查找我想要的所有记录.从20亿行记录中,1000个是我预期的输出,但是,我只有100条记录.
我的工作:
public void run() {
Cluster cluster = getConnection();
Session session = cluster.connect("db");
LOGGER.info("Starting ...");
boolean run = true;
int print = 0;
while ( run ) {
if (maxTokenReached(actualToken)) {
LOGGER.info("Max Token Reached!");
break;
}
ResultSet resultSet = session.execute(queryBuilder(actualToken));
Iterator<Row> rows = resultSet.iterator();
if ( !rows.hasNext()){
break;
}
List<String> rowIds = new ArrayList<String>();
while (rows.hasNext()) {
Row row = rows.next();
Long leadTime = row.getLong("my_column");
if (myCondition(myCollumn)) {
String rowId = row.getString("key");
rowIds.add(rowId); …Run Code Online (Sandbox Code Playgroud)