我能';t在java中使用hector创建超级列

我能';t在java中使用hector创建超级列,java,nosql,cassandra,hector,super-columns,Java,Nosql,Cassandra,Hector,Super Columns,我对卡桑德拉和赫克托很陌生&试图创建一个超级专栏。我已经做了很多研究,但不知怎么的,到目前为止什么都不管用。在我对stackoverflow的研究中,我发现了这个问题,这似乎对我很有帮助。所以我尝试为我的示例插入代码,但是我遇到了一个异常 这是我的代码(如果你有hector,应该是可复制/可复制的)-sry如果它可能不是完全可读的,我在询问这里之前做了很多尝试和错误: import java.util.Arrays; import me.prettyprint.cassandra.seriali

我对卡桑德拉和赫克托很陌生&试图创建一个超级专栏。我已经做了很多研究,但不知怎么的,到目前为止什么都不管用。在我对stackoverflow的研究中,我发现了这个问题,这似乎对我很有帮助。所以我尝试为我的示例插入代码,但是我遇到了一个异常

这是我的代码(如果你有hector,应该是可复制/可复制的)-sry如果它可能不是完全可读的,我在询问这里之前做了很多尝试和错误:

import java.util.Arrays;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.ThriftKsDef;
import me.prettyprint.cassandra.service.template.SuperCfTemplate;
import me.prettyprint.cassandra.service.template.SuperCfUpdater;
import me.prettyprint.cassandra.service.template.ThriftSuperCfTemplate;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
import me.prettyprint.hector.api.factory.HFactory;

public class DatabaseDataImporter {

    private Cluster myCluster;
    private KeyspaceDefinition keyspaceDefinition;
    private Keyspace keyspace;
    private SuperCfTemplate<String, String, String> template;

    final static StringSerializer ss = StringSerializer.get();

    public DatabaseDataImporter() {

        initializeCluster();

        SuperCfTemplate<String, String, String> template = new ThriftSuperCfTemplate<String, String, String>(
                keyspace, "Nodes", ss, ss, ss);
        SuperCfUpdater<String, String, String> updater = template
                .createUpdater("key", "newcf");
        updater.setString("subname", "1");
        template.update(updater);
    }

    private void initializeCluster() {
        // get Cluster
        myCluster = HFactory.getOrCreateCluster("Test Cluster",
                "localhost:9160");

        keyspaceDefinition = myCluster.describeKeyspace("Graphs");
        // If keyspace does not exist, the CFs don't exist either. => create
        // them.
        if (keyspaceDefinition == null) {
            createSchema();
        }

        keyspace = HFactory.createKeyspace("Graphs", myCluster);
    }

    private void createSchema() {
        // get Cluster
        Cluster myCluster = HFactory.getOrCreateCluster("Test Cluster",
                "localhost:9160");

        // add Schema
        int replicationFactor = 1;

        ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(
                "Graphs", "Nodes", ComparatorType.BYTESTYPE);

        KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition(
                "Graphs", ThriftKsDef.DEF_STRATEGY_CLASS, replicationFactor,
                Arrays.asList(cfDef));
        // Add the schema to the cluster.
        // "true" as the second param means that Hector will block until all
        // nodes see the change.
        myCluster.addKeyspace(newKeyspace, true);
    }

    public static void main(String[] args) {
        new DatabaseDataImporter();
    }

}
这就是我不知道该怎么做的地方。我试图找到一个“SuperColumnFamilyDefinition”类,但找不到。你有什么想法或建议我需要修改什么来修复我的代码?我会很高兴的


非常感谢你和我分享的每一个想法

我找到了问题的答案,希望与大家分享(也许这对将来的某个人有帮助)。因为我认为解决办法很简单

ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(
                "Graphs", "Nodes", ComparatorType.BYTESTYPE);
需要扩展到

ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(
        "Graphs", "Nodes", ComparatorType.BYTESTYPE);
// defines it as super column
((ThriftCfDef) cfDef).setColumnType(ColumnType.SUPER);
ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(
                "Graphs", "Nodes", ComparatorType.BYTESTYPE);
ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(
        "Graphs", "Nodes", ComparatorType.BYTESTYPE);
// defines it as super column
((ThriftCfDef) cfDef).setColumnType(ColumnType.SUPER);