부제 : Impala INVALIDATE METADATA Statement
Hive 로 테이블을 만드는 경우
CREATE TABLE IF NOT EXISTS db_name.table_name (user_id string, item_id string) partitioned by (partition_name string);
Impala 에서
use db_name; show tables; # table_name 이라는 테이블이 없는 것을 볼 수 있다.
이유 is 뭔들.
** 참고 : SQL Statement
자세한 내용은 위 링크를 봐도 좋다.
Impala 는 쿼리를 날릴때마다 Metadate 를 reload 하지 않는다. 그래서 Hive 에서 수정한 Metadata 를 available 하도록 하기 위해서는 아래와 같이 INVALIDATE METADATA 쿼리를 실행해주어야 한다. 여기서 REFRESH 쿼리와 혼동하면 안되는 것은 아직 테이블이 미 생성되었기 때문에 db_name.table_name 의 메타데이터는 없는 것으로 인식하는 중이다. 그렇기 때문에 테이블이 최초 생성 되었을 때는 INVALIDATE METADATA 쿼리를 실행시켜주어야만 한다.
INVALIDATE METADATA db_name.table_name;
한번 메타데이터가 생성된 테이블은 그 뒤에 수정될경우 아래와 같이 REFRESH 만 해주어도 된다. 비용( performance 와 상반된 ) 적으로는 INVALIDATE METADATA 가 더 좋지 않기 때문에 Cloudera 에서 가급적 REFRESH를 쓰기를 권고한다.
REFRESH db_name.table_name;
위에서도 언급했지만 실수하기 좋은것은 처음 생성시엔 반드시 INVALIDATE METADATA 쿼리를 실행해 주어야 한다는 것! :)
'Hive, Impala, Tez' 카테고리의 다른 글
[나만을 위한 짧은 이야기] Impala 에서는 UDAF 가 안된다.. (0) | 2017.01.23 |
---|