2011-08-24 137 views
1

我試圖讓當前密鑰空間中的所有列族我使用的,因爲我想擺脫錯誤的列科列表:赫克託+卡桑德拉:獲取

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不同意這一行的「List」部分。除此之外,看起來他的代碼是正確的。有人能幫我理解爲什麼這條線路是錯誤的,或者我的方法是否關閉?

下面是完整的代碼片段:

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) 
+0

你可以發佈一個完整的代碼示例和或編譯器錯誤,我懷疑這是愚蠢的,像意外地導入javax.swing.List而不是java.util.List – sbridges

+0

確定修改了原始問題以包含代碼和錯誤 – Henry

回答

3

添加

import java.util.List; 

你進口。在eclipse中,CTRL-SHIFT-O將爲您組織您的導入,並添加缺少的任何內容。

+0

是的,謝謝。那正是我的問題。我正在使用awt。 – Henry