Версия Hive: 1.3.0
Я включаю функцию транзакции Hive, устанавливая
Сторона HiveServer
hive.support.concurrency=true
hive.enforce.bucketing=true
hive.exec.dynamic.partition.mode=nonstrict
hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
Сторона Metastore
hive.compactor.initiator.on=true
hive.compactor.worker.threads=1
И создайте таблицу транзакций, например:
CREATE TABLE hello_acid (key int, value int)
PARTITIONED BY (load_date date)
CLUSTERED BY(key) INTO 3 BUCKETS
STORED AS ORC TBLPROPERTIES ('transactional'='true');
Вставьте значение:
INSERT INTO hello_acid partition (load_date='2016-03-01') VALUES (1, 1);
Затем я запускаю следующий запрос:
SELECT h1.key from hello_acid h1 JOIN hello_acid h2 ON (h1.key = h2.key);
Я получаюошибка ниже:
java.io.IOException: java.io.FileNotFoundException: Path is not a file: /user/hive/warehouse/hello_acid/load_date=2016-03-01