아침바라기의 이야기

Presto에서 쿼리 사용기 본문

개발이야기/Presto

Presto에서 쿼리 사용기

아침바라기 2015. 10. 20. 19:12

느리지만 매우 안정적인 Hive의 대안으로 Presto를 사용 중이다.


통계용 데이터를 쿼리로 만들던 중에 팁 몇가지 정리해본다.

(Presto + Hive + Hadoop 2.0 + MySQL 연동)



1. 하이브로의 INSERT는 불가능하다


* 아직 지원하지 않는다. (UPDATE는 아예 메뉴얼에도 없다!)

* 결과를 저장하려면 CREATE AS 문을 사용하면 테이블로 저장할 수 있다. 

* 아래처럼...


CREATE TABLE visit_log AS
SELECT log_date, detail 
FROM raw_log



2. 서브쿼리를 사용할 수 없다


* 역시 아직 지원하지 않는다.

* 대안으로 join과 inner view를 사용할 수 있다. 


 
SELECT t.id,
      c.val AS code
FROM table t
INNER JOIN  (SELECT id, 
                    related_id 
             FROM code
             LIMIT 1
            ) c 
ON t.id = c.relate_id 


위의 예제처럼 inner view를 무수히 많이 만들어서 처리할 수 있다. 

(개인적인 선호도로는 inner view 보단 create as 로 테이블을 만들어서 처리하는게 더 낫지 않을까 싶다)



3. JSON 타입이 있어 column['key'] 형태로 데이터를 조회할 수 있다.



SELECT t.option['enable_script'] 
FROM table t 



* 이글은 Presto 0.115 버전 기준으로 작성되었습니다.