0

私はカサンドラにいくつかの赤ちゃんのステップを踏んでいます。アドバイスが必要でした。

列ファミリーにデータを挿入したいのですが、次の資格情報で列ファミリーを既に作成しています-

  ColumnFamily: testkp
  Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
  Default column value validator: org.apache.cassandra.db.marshal.UTF8Type
  Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type
  GC grace seconds: 864000
  Compaction min/max thresholds: 4/32
  Read repair chance: 0.1
  DC Local Read repair chance: 0.0
  Replicate on write: true
  Caching: KEYS_ONLY
  Bloom Filter FP chance: default
  Built indexes: []
  Column Metadata:
    Column Name: Col_A
      Validation Class: org.apache.cassandra.db.marshal.FloatType
    Column Name: Col_B
      Validation Class: org.apache.cassandra.db.marshal.LongType
    Column Name: Col_C
      Validation Class: org.apache.cassandra.db.marshal.Int32Type
    Column Name: Col_D
      Validation Class: org.apache.cassandra.db.marshal.DateType
    Column Name: Col_E
      Validation Class: org.apache.cassandra.db.marshal.UTF8Type
  Compaction Strategy: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
  Compression Options:
    chunk_length_kb: 64
    sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor

今、いくつかの基本的な挿入メカニズムを見て試してみましたが、スキーマを事前に定義していなければ基本的に機能します

public class SampleDataInsert {

private static StringSerializer stringSerializer = StringSerializer.get();

public static void main(String[] args) throws Exception {
    Cluster cluster = HFactory.getOrCreateCluster("TestCluster","localhost:9160");

    Keyspace keyspaceOperator = HFactory.createKeyspace("test",cluster);

    try {
        Mutator<String> mutator =   HFactory.createMutator(keyspaceOperator,stringSerializer);

        for (int i = 0; i < 2; i++) {
            mutator.addInsertion("key_" + i, "testkp", HFactory.createStringColumn("Col_A", ""+ i));
            mutator.addInsertion("key_" + i, "testkp", HFactory.createStringColumn("Col_B", ""+ i));
            mutator.addInsertion("key_" + i, "testkp", HFactory.createStringColumn("Col_C", ""+ i));
            mutator.addInsertion("key_" + i, "testkp", HFactory.createStringColumn("Col_D", ""+ i));
            mutator.addInsertion("key_" + i, "testkp", HFactory.createStringColumn("Col_E", ""+ i));
}
mutator.execute();
}

今、スキーマを事前定義したので、UTF8Type 以外のキー検証クラスを持つ列を追加しようとすると。基本的にエラーが発生します(これは問題ありません)。

私の質問は、他の検証クラス (FloatType、LongType、DateType) をヘクターで定義して、挿入できるようにする方法です。

この情報を見つけるためのリンク、提案..

PS私は数日間試しましたが、多くの情報を見つけることができませんでした. 私の質問が少し低レベル/またはフォーマットが不十分である場合はお詫び申し上げます。

よろしくお願いします

4

1 に答える 1

1

mutator.addInsertion(key, cf, HFactory.createColumn(longName, floatValue, LongSerializer.get(), FloatSerializer.get()))

于 2012-11-08T16:33:16.083 に答える