1

圧縮された列ファミリーのピッグ リレーションをダンプしようとしています。値が json blob である単一の列です。これは、snappy 圧縮によって圧縮され、値バリデーターは BytesType です。リレーションを作成してダンプした後、ゴミが発生します。説明は次のとおりです。

ColumnFamily: CF
  Key Validation Class: org.apache.cassandra.db.marshal.TimeUUIDType
  Default column value validator: org.apache.cassandra.db.marshal.BytesType
  Cells sorted by: org.apache.cassandra.db.marshal.UTF8Type
  GC grace seconds: 86400
  Compaction min/max thresholds: 2/32
  Read repair chance: 0.1
  DC Local Read repair chance: 0.0
  Populate IO Cache on flush: false
  Replicate on write: true
  Caching: KEYS_ONLY
  Bloom Filter FP chance: default
  Built indexes: []
  Compaction Strategy: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
  Compression Options:
    sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor

その後私は:

grunt> rows = LOAD 'cql://Keyspace/CF' using CqlStorage();

私も試しました:

grunt> rows = LOAD 'cql://Keyspace/CF' using CqlStorage()as (key: chararray, col1: chararray, value: chararray);

しかし、これをダンプすると、まだバイナリのように見えます。

圧縮が透過的に処理されていないのですか、それとも何か不足しているだけですか? 私はいくつかのグーグルを行いましたが、この件については何も見ていません。また、Datastax Enterprise を使用しています。3.1. 前もって感謝します!

4

1 に答える 1

0

問題を解決できました。java.util.zip.Deflater/Inflater を使用していた DAO で、CF で定義されたスナッピー圧縮に加えて、別の圧縮レイヤーが発生していました。解決策は、CassandraStorage を拡張し、getNext() メソッドをオーバーライドすることでした。新しい実装は super.getNext() を呼び出し、必要に応じてタプルを拡張します。

于 2014-04-29T19:27:30.090 に答える