0

DSE 3.2.4 で奇妙な問題に直面しています。これが私のテーブル構造です。

CREATE TABLE tbl_samp (
  PK text,
  CK1 varint,
  CK2 text,
  CK3 varint,
  value float,
  PRIMARY KEY (PK, CK1, CK2, CK3)
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

CqlStorage(); を使用して、豚から cassandra に大量のデータをダンプしています。

(PK、CK1、CK2、CK3) の組み合わせは約 112 万通りあります

PIGの実行が終わったとき

これが私のブタの関係です

reqDataCQL = foreach reqData generate TOTUPLE(TOTUPLE('PK',PK), TOTUPLE('CK1',CK1), TOTUPLE('Ck2',CK2), TOTUPLE('CK3',Ck3)), TOTUPLE(value);

store reqDataCQL into 'cql://MyKeyspace/tbl_samp?output_query=update+MyKeyspace.tbl_samp+set+value+%3D+%3F' using CqlStorage();

私は次を見ることができます

Input(s):
Successfully read 34327 records from: "/user/k/Input.txt"
Successfully read 4 records from: "cql://MyKeySpace/mappingtable"

Output(s):
Successfully stored 1128902 records in: "cql://MyKeySpace/tbl_samp?output_query=update+conflux.to1+set+value+%3D+%3F"

しかし、テーブル tbl_samp を照会すると、(PK と CK1) の組み合わせである 8600 レコードしか表示されません

これが私のカウントクエリです

    select count(1) from tbl_samp limit 2000000;

 count
-------
  8681

複合キーの理解にギャップはありますか?

PK が RowKey であり、(CK1,CK2,CK3) と Value の組み合わせが列名になることはわかっています

Cassandra Composite での私の理解は

PK,(CK1|CK2|CK3|value:1),(CK11|CK22|CK33|value:11)
PK1,(CK111|CK222|CK333|value:111)

これについて私を助けてください

4

2 に答える 2

0

主キー PK、CK1、CK2、CK3 の場合:

パーティション キーは PK です。行が入るパーティションを決定します。パーティション内では、CK1、CK2、および CK3 のそれぞれの固有の組み合わせが列を定義します。したがって、主キーのすべてのキーが一意の参照を構成します。同じ PK、CK1、CK2、および CK3 を持つ複数のエントリを挿入すると、最後の書き込みが優先されます。

あなたの CQL クエリは何ですか? キースペースのレプリケーション係数は? 読み取りと書き込みにどの整合性レベルを指定していますか? 読み取りと書き込みの一貫性 (RC と WC) が低いため、書き込まれていないレプリカから読み取っている可能性があります。

于 2014-07-28T13:46:58.630 に答える
0

Sorry its my fault my understanding of Composite Key was correct. I have one UDF where I am overwriting this combination of (PK,CK1,CK2,CK3)

Soo in general cassandra stores based on Partition Key and combination of partition key and clustering columns gives each row.

and column names will be unique combination of Clustering columns.

PK,(CK1|CK2|CK3|value:1),(CK11|CK22|CK33|value:11)
PK1,(CK111|CK222|CK333|value:111)

thanks

于 2014-07-29T11:18:50.260 に答える