Метка времени Первичный ключ Куду
Я пытаюсь загрузить данные в таблицу Kudu через конверт. Одним из столбцов первичного ключа является отметка времени. DDL: СОЗДАТЬ ТАБЛИЦУ BAL ( client_id int bal_id int, метка времени_ фактического времени, prsn_id int, двойник bal_amount, строка prsn_name, КЛЮЧ ПЕРВИЧНОГО (client_id, bal_id,ffective_time)) PARTITION BY HASH(client_id) PARTITIONS 8 СОХРАНЕНЫ КАК KUDU;
Но это выдает ошибку Java.lang.illelegalArgumentException
Поэтому мой вопрос прост - столбец метки времени может быть частью первичного ключа или нет?
1 ответ
Да, это совершенно нормально, чтобы включить временную метку как часть первичного ключа. Пожалуйста, найдите код:
use ${var:db_name};
CREATE TABLE test (
table_name STRING NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
table_id BIGINT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
last_read_timestamp TIMESTAMP NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
window STRING NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
ext_gen_timestamp timestamp NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
extract_date timestamp NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
manual_rerun STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
PRIMARY KEY (table_name, table_id, last_read_timestamp)
)
STORED AS KUDU;
*
Да, отметка времени может быть частью первичного ключа.
Я создал таблицу:
CREATE TABLE BAL ( client_id int,
bal_id int,
effective_time timestamp,
prsn_id int,
bal_amount double,
prsn_name string,
PRIMARY KEY ( client_id, bal_id, effective_time))
partition by hash(client_id) partitions 8
stored as KUDU
TBLPROPERTIES (
'kudu.master_addresses' = '127.0.0.1' ,
'kudu.num_tablet_replicas' = '1'
);
Таблица создана успешно.
Чтобы проверить подробную информацию о таблице: describe formatted bal;
Оператор SHOW CREATE TABLE всегда представляет спецификацию PRIMARY KEY как отдельный элемент в списке столбцов:
show create table bal;
выход
Query: show create table bal
+------------------------------------------------------------------------------------------------------------------------------+
| result |
+------------------------------------------------------------------------------------------------------------------------------+
| CREATE TABLE default.bal ( |
| client_id INT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| bal_id INT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| effective_time TIMESTAMP NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| prsn_id INT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| bal_amount DOUBLE NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| prsn_name STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| PRIMARY KEY (client_id, bal_id, effective_time) |
| ) |
| PARTITION BY HASH (client_id) PARTITIONS 8 |
| STORED AS KUDU |
| TBLPROPERTIES ('kudu.master_addresses'='127.0.0.1', 'kudu.num_tablet_replicas'='1', 'kudu.table_name'='impala::default.BAL') |
+------------------------------------------------------------------------------------------------------------------------------+
Fetched 1 row(s) in 0.11s
Выходные данные DESCRIBE показывают, как сообщается о кодировке после создания таблицы, показывают, какой столбец назначен в качестве первичного ключа и что пропуск кодирования (в данном случае для столбца ID) аналогичен указанию DEFAULT_ENCODING.
describe bal;
Query: describe bal
+----------------+-----------+---------+-------------+----------+---------------+---------------+---------------------+------------+
| name | type | comment | primary_key | nullable | default_value | encoding | compression | block_size |
+----------------+-----------+---------+-------------+----------+---------------+---------------+---------------------+------------+
| client_id | int | | true | false | | AUTO_ENCODING | DEFAULT_COMPRESSION | 0 |
| bal_id | int | | true | false | | AUTO_ENCODING | DEFAULT_COMPRESSION | 0 |
| effective_time | timestamp | | true | false | | AUTO_ENCODING | DEFAULT_COMPRESSION | 0 |
| prsn_id | int | | false | true | | AUTO_ENCODING | DEFAULT_COMPRESSION | 0 |
| bal_amount | double | | false | true | | AUTO_ENCODING | DEFAULT_COMPRESSION | 0 |
| prsn_name | string | | false | true | | AUTO_ENCODING | DEFAULT_COMPRESSION | 0 |
+----------------+-----------+---------+-------------+----------+---------------+---------------+---------------------+------------+
Fetched 6 row(s) in 0.11s