1

pelops api を使用して cassandra にデータを挿入しようとすると、次のエラーが発生します。

 java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V

次のjarを使用しています

  1. scale7-core-1.3.0.jar
  2. scale7-pelops-0.912-0.7.0-rc4-1.jar
  3. cassandra-1.0.5 の lib ディレクトリにあるすべての jar

次の関数を呼び出すと例外が発生します

public void writeToBatch(String columnFamily, String rowKey, String colmName,String value, int ttl)
 {
     this.mutator.writeColumn(columnFamily, rowKey,
                mutator.newColumn(colmName, value, ttl));
 }

エラー スタックは次のとおりです。

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V
    at org.scale7.cassandra.pelops.Mutator.newColumn(Mutator.java:625)
    at org.scale7.cassandra.pelops.Mutator.newColumn(Mutator.java:562)
    at com.audienceadnetwork.cassandra.sstablewriter.utils.PelopsClient.writeToBatch(Unknown Source)
4

1 に答える 1

4

cassandra-1.0.5 に対して構築された thrift バインディングと、はるかに古い thrift バインディングに対して構築されたバージョンの pelops を混在させています。API 自体は下位互換性がありますが、このようにバインディングを混在させることはできません。次の 2 つのオプションがあります。

最善の選択肢は、おそらく新しいバージョンの pelops にアップグレードすることです。github: https://github.com/s7/scale7-pelopsによると、1.0.x リリースで利用可能なスナップショット バージョンがあります。

何らかの理由で、上記で使用したバージョンの pelops を使用する必要がある場合は、cassandra 1.0.5 に対してビルドされたものではなく、バージョンが依存する cassandra thrift バインディングも使用する必要があります。

于 2011-12-06T16:23:01.653 に答える