Как данные хранятся в семействе столбцов составного ключа cassandra

Я столкнулся с некоторой специфической проблемой в 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();

У меня есть около 1,12 миллиона различных комбинаций (PK, CK1, CK2, CK3)

поэтому, когда я закончил запускать 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, я вижу только 8600 записей, которые представляют собой комбинацию (PK и CK1)

вот мой запрос на подсчет

    select count(1) from tbl_samp limit 2000000;

 count
-------
  8681

Есть ли пробел в моем понимании Composite Key?

Я знаю, что PK — это мой RowKey, а комбинации (CK1, CK2, CK3) со значением будут именем моего столбца.

Мое понимание Cassandra Composite таково:

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

Пожалуйста помоги мне с этим


person sudheer    schedule 28.07.2014    source источник
comment
Можете ли вы отредактировать свой пост с запросом, который показывает вам только 8600 записей?   -  person Aaron    schedule 28.07.2014
comment
@BryceAtNetwork23, пожалуйста, найдите отредактированный вопрос   -  person sudheer    schedule 29.07.2014


Ответы (2)


Для вашего первичного ключа PK, CK1, CK2, CK3:

Ключ раздела — ПК. Он решает, в какой раздел пойдет строка. Внутри раздела каждая уникальная комбинация CK1, CK2 и CK3 определяет столбец. Таким образом, все ключи в первичном ключе составляют уникальную ссылку. Если вы вставите несколько записей с одинаковыми PK, CK1, CK2 и CK3, победит последняя запись.

Каков ваш запрос CQL? Каков коэффициент репликации пространства ключей? Какой уровень согласованности вы указываете для чтения и записи? Возможно, ваша согласованность чтения и записи (RC и WC) низкая, поэтому вы читаете из реплик, в которые не выполнялась запись.

person ashic    schedule 28.07.2014
comment
У меня есть 1,12 миллиона комбинаций DISTINCT PK, CK1, CK2 и CK3, но когда я сохраняю с помощью CqlStorage(), он сбрасывает только 8k, которые являются комбинациями DISTICNT PK и CK1. - person sudheer; 29.07.2014
comment
Каков коэффициент репликации на столе? Есть ли способ в свинье указать уровень согласованности, который будет использовать кассандра? Попробуйте установить коэффициент репликации пространства ключей равным 3, используя согласованность записи QUORUM и добавить, используя CONSISTENCY QUORUM в вашем запросе на выборку. Если коэффициент репликации больше единицы, а pig пишет с единицей, попробуйте использовать согласованность all в вашем запросе на выборку. Вы бы не использовали это в производстве, но посмотрите, даст ли это ожидаемый счет. - person ashic; 29.07.2014

Извините, это моя вина, мое понимание составного ключа было правильным. У меня есть одна пользовательская функция, в которой я перезаписываю эту комбинацию (PK, CK1, CK2, CK3).

Soo, как правило, хранит cassandra на основе ключа раздела, а комбинация ключа раздела и столбцов кластеризации дает каждую строку.

и имена столбцов будут уникальной комбинацией столбцов кластеризации.

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

Благодарность

person sudheer    schedule 29.07.2014