hive 에서는 Array 형태의 데이터를 풀어서 ROW 로 풀어내는게 가능하다. 이때 사용하는문법이 explode 이다. posexplode 는 무엇이냐? 인덱스번호까지 알아야할 경우가 종종 있는데 이때는 posexplode 를 쓰면 된다. 이해를 돕기위해 아래와 같은 데이터가 존재한다고 가정하자. (v_sample) beeline> select * from v_sample; +------------------+-------------------------+ | v_sample.tags | v_sample.title | +------------------+-------------------------+ | ["fun","happy"] | hello! my name is haha | | [] | test..
hive 테이블의 경우, 파일포맷(text, parquet, rcfile, sequence, orc) 별로 테이블을 선언하는 쿼리가 조금씩 차이가 있어서 create table 하는 방법과, 테이블의 파일포맷별 압축 알고리즘(gzip or zlib, snappy)을 선택하는 방법이 달라서 정리한 문서이다. (옛날에 방치된 내 블로그에 정리한글인데 옮겨옴) 1. text 파일 아래와 같이 text 파일 포맷을 사용하는 Hive 테이블을 만들때는 특별히 선언할것은 없다. 단, 압축을 하기위해서 압축알고리즘을 지정하는 방법은 SET 을 통해 환경변수로 변경후 insert 를 하면 된다. create table tb_text ( ymd String, tag String, cnt int ) ROW FORMAT D..
select 문을 사용할때 특정 필드만 선택할 경우는 필드명을 나열하면 된다. 근데 필드가 어마어마하게 많은데 1개 필드만 제외해서 select 하고 싶은 경우 어떻게 해야할지 고민이 된다. (쉽게 말해서 화이트 리스트로 필드를 골라내는게 아니라, 블랙 리스트로 필드를 골라내고 싶다는말) 예를 들어, 모든 필드를 조회할때는 select * from t_sample_users 로 간소화가 가능하다. 하지만 여기서 tel_num, ymd 만 제외해서 조회하려면 어떻게 해야할까? 가장 기본적인 방법은 아래 방법처럼 필요한 필드를 모두 나열하는 방법이다. (=화이트 리스트 방식) 하지만 필드가 너무 많다면 이건 너무 비효율적이다. 그럼 블랙리스트 방식으로 안쓰는 필드만 발라내는 방법은 어떻게 해야할까??? hi..