Hive LIMIT 튜닝 (데이터 샘플링으로 빠르게 응답하기)
Hive LIMIT 튜닝 (데이터 샘플링으로 빠르게 응답하기)
· Version : Hive
하이브에서 현재 저장되어 있는 데이터의 일부분을 확인하려고 LIMIT 절을 자주 사용한다. RDB의 경우 데이터를 ROW단위로 읽기때문에(정확히는 페이지 단위) ROW단위로 처리하면서LIMIT 의 결과를 (Sort, Group 등 연산을 하지 않았을 경우) 빠르게 응답할 수 있다. 하지만 하이브의 경우 데이터 전체에 대해 쿼리를 수행하고 일부 결과만을 반환하기 때문에 불필요한 리소스 낭비가 크다. 그래서 최대한 LIMIT 명령을 피하는 것이 좋다.
만약 limit를 자주 사용할 경우 hive-site.xml 파일에서 hive.limit.optimize.enable설정을 통해서 LIMIT를 사용할 경우 원본 데이터를 샘플링 할 수 있다.
<property> <name>hive.limit.optimize.enable</name> <value>false</value> <description>Whether to enable to optimization to trying a smaller subset of data for simple LIMIT first.</description> </property> |
hive.limit.optimize.enable 옵션을 True로 설정하면 hive.limit.row.max.size와 hive.limit.optimize.limit.file 을 제어할 수 있다.
<property> <name>hive.limit.row.max.size</name> <value>100000</value> <description>When trying a smaller subset of data for simple LIMIT, how much size we need to guarantee each row to have at least.</description> </property>
<property> <name>hive.limit.optimize.limit.file</name> <value>10</value> <description>When trying a smaller subset of data for simple LIMIT, maximum number of files we can sample.</description> </property> |
하지만 이 기능은 JOIN이나 GRPUP BY 같이 리듀스 과정이 필요한 모든 쿼리에서는 결과 값이 달라지기 때문에 주의해야 한다.
2020-09-22 / Sungwook Kang / http://sungwookkang.com
Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, Hive, Hive tunning, 하이브 튜닝, limit tunning, Limit Optimize, limit sampling