【问题标题】:Hector + Cassandra: Get Column Family ListHector + Cassandra:获取列族列表
【发布时间】:2011-11-03 05:47:43
【问题描述】:

我正在尝试获取我正在使用的当前键空间中的所有列族,因为我想摆脱错误:

InvalidRequestException(why:[column family] already exists in keyspace)

我的逻辑是获取当前键空间中的所有列族并检查特定列族是否出现在返回的列表中。所以,我试试:

KeyspaceDefinition keyspaceDef = HFactory.createKeyspaceDefinition("test");

...

List<ColumnFamilyDefinition> lsCf = keyspaceDef.getCfDefs();

创建时似乎有问题

List<ColumnFamilyDefinition> lsCf = keyspaceDef.getCfDefs();

我做了一个System.out.println(keyspaceDef.getCfDefs()),它返回了

[]

一个空列表 - 这是我所期望的。我无法理解为什么List<ColumnFamilyDefinition> lsCf = keyspaceDef.getCfDefs(); 不正确。 Eclipse 不同意这一行的“列表”部分。除此之外,他的代码似乎是正确的。有人可以帮我理解为什么这条线是错误的或者我的方法是否错误?

这里是完整的代码 sn-p:

package org.cassandra.examples;

import me.prettyprint.cassandra.model.BasicColumnFamilyDefinition;
import me.prettyprint.cassandra.service.CassandraHostConfigurator;
import me.prettyprint.cassandra.service.ThriftCfDef;
import me.prettyprint.cassandra.service.ThriftCluster;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.factory.HFactory;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.*;
import me.prettyprint.cassandra.model.BasicColumnDefinition;
import me.prettyprint.cassandra.model.BasicColumnFamilyDefinition;
import me.prettyprint.cassandra.model.thrift.ThriftConverter;

import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.thrift.Cassandra;
import me.prettyprint.cassandra.service.ThriftKsDef;
import me.prettyprint.hector.api.*;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.beans.HSuperColumn;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ColumnIndexType;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.cassandra.service.template.ColumnFamilyTemplate;
import me.prettyprint.cassandra.service.template.ColumnFamilyUpdater;
import me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.hector.api.query.ColumnQuery;
import me.prettyprint.hector.api.query.QueryResult;
import me.prettyprint.hector.api.query.SuperColumnQuery;

public class HectorTest {
    private static String keyspaceName = "test3";
    private static KeyspaceDefinition newKeyspaceDef;
    private static Cluster cluster;
    private static Keyspace ksp;

    public static void main(String[] args) {

        cluster = HFactory.getOrCreateCluster("test cluster", "xxx.xxx.x.xx:9160");
        newKeyspaceDef = HFactory.createKeyspaceDefinition(keyspaceName);
        ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition("MyKeyspace",                              
                "ColumnFamilyName", 
                ComparatorType.BYTESTYPE);
        List<ColumnFamilyDefinition> lCf = newKeyspaceDef.getCfDefs(); //= new ArrayList<ColumnFamilyDefinition>();
        if((cluster.describeKeyspace(keyspaceName)) == null){
            createSchema();
        }

        ksp = HFactory.createKeyspace(keyspaceName, cluster);
        //Articles art = new Articles(cluster, newKeyspaceDef);
        //cluster.dropColumnFamily(keyspaceName, "Articles");


    }

    public static void createSchema(){
        cluster.addKeyspace(newKeyspaceDef,true);
    }
}

错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    List cannot be resolved to a type

    at org.cassandra.examples.HectorTest.main(HectorTest.java:55)

【问题讨论】:

  • 你能发布一个完整的代码示例和/或编译器错误吗,我怀疑这很愚蠢,比如不小心导入 javax.swing.List 而不是 java.util.List
  • ok 修改了原始问题以包含代码和错误

标签: list cassandra hector


【解决方案1】:

添加

import java.util.List; 

给你进口。在 Eclipse 中,CTRL-SHIFT-O 将为您组织导入,并添加任何缺少的内容。

【讨论】:

    猜你喜欢
    • 2013-11-01
    • 1970-01-01
    • 2013-10-28
    • 2012-01-15
    • 2013-08-02
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多