HIVE 0.13은 데이터베이스의 모든 테이블에서 select 문을 실행할 때 전체 데이터베이스 (LOCK-0000000000과 같은 노드가 Zookeeper의 데이터베이스 노드의 자식으로 표시됨)를 공유합니다. 데이터 베이스. HIVE는 select 문을 실행할 때도 스키마 전체에 공유 잠금을 생성합니다. 이렇게하면 원래 쿼리가 끝나고 잠금이 해제 될 때까지 데이터베이스의 다른 테이블에 대한 CREATE/DELETE 문이 고정됩니다.하이브 하나의 테이블에서 select를 실행할 때 전체 데이터베이스를 잠급니다.
아무도이 문제를 해결할 방법을 알고 있습니까? 다음 링크는 동시성이 꺼져 있음을 제안하지만 전체 테이블을 교체 할 때 수행 할 수 없으며 전체 내용을 바꾸기 전에 선택 문이 테이블에 액세스하지 않도록해야합니다.
다른 하이브 쉘에서http://mail-archives.apache.org/mod_mbox/hive-user/201408.mbox/%3C0eba01cfc035 $ 3501e4f0 $ 9f05aed0 $ @ 닷컴 % 3E
use mydatabase;
select count(*) from large_table limit 1; # this table is very large and hive.support.concurrency=true`
한편 1 쿼리가 실행 :
use mydatabase;
create table sometable (id string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE ;
문제은 "CREATE TABLE"는 않는다는 것입니다 첫 번째 쿼리 (선택)가 끝날 때까지 실행되지 않습니다.
업데이트 : 우리는 Cloudera의 Hive CDH-5.2.1-1 배포판을 사용하고 있으며이 문제가 있습니다.
테이블을 만들면 맵 축소 작업이 시작되지 않습니다. 그것은 단지 Metastore에 대한 행동 일뿐입니다. Hive 0.13으로 업그레이드 한 후 새로운 잠금 장치가 발생했습니다. 미안하지만 제안이 없지만 메모리와는 아무런 관련이 없다는 것이 확실합니다. –
알렉스, 어떻게 자물쇠를 풀려고 했니? 우리에게는 해결책이 있지만 깨끗하지는 않습니다. –
@alexP_Keaton 관심이 있으시면별로 깨끗한 해결책은 없습니다 : http://etl.svbtle.com/removing-database-level-locks-in-hive –