HiveQL 커맨드

HiveQL 커맨드 (LanguageManual Commands)

HiveQL에는 SQL 문장 외에도 커맨드라고 부르는 비-SQL 문장이 있어요. 설정 값을 바꾸거나 리소스를 추가하는 등의 작업을 해요. 커맨드는 HiveQL 스크립트나 CLI, Beeline에서 직접 사용할 수 있어요.

출처: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Commands

기본 커맨드 몇 가지를 보면, quit 또는 exit는 대화형 셸을 나가요. reset은 설정을 기본값으로 되돌리고(hiveconf: 접두사를 붙인 키는 제외), set <key>=<value>는 설정 변수 값을 지정하며, set은 사용자나 Hive가 덮어쓴 설정 목록을, set -v는 모든 Hadoop·Hive 설정 변수를 출력해요. set에서 변수명을 잘못 적어도 오류가 나지 않으니 주의하세요.

리소스 관리는 add, list, delete로 해요. add FILE[S] <filepath> <filepath>*, add JAR[S] <filepath> <filepath>*, add ARCHIVE[S] <filepath> <filepath>*로 파일·jar·아카이브를 분산 캐시의 리소스 목록에 추가해요. Hive 1.2.0부터는 ivy://group:module:version 형태의 Ivy URL도 지원해요. list FILE[S]는 이미 추가된 리소스 목록을 보여주고, delete FILE[S] <filepath>*는 분산 캐시에서 리소스를 제거해요.

외부 명령 실행도 가능해요. ! <command>는 Hive 셸에서 셸 명령을 실행하고, dfs <dfs command>는 Hive 셸에서 dfs 명령을 실행해요. <query string>은 Hive 쿼리를 실행해 표준 출력으로 결과를 보내요. source FILE <filepath>는 CLI 안에서 스크립트 파일을 실행해요. compile '<groovy string>' AS GROOVY NAMED <name>은 인라인 Groovy 코드를 컴파일해 UDF로 쓰게 해 줘요(Hive 0.13.0+).

실제 사용 예는 이렇게 해요.

hive> set mapred.reduce.tasks=32;
hive> set;
hive> select a.* from tab1;
hive> !ls;
hive> dfs -ls;

이 커맨드들은 Beeline에서도 동일하게 쓸 수 있어요. Hive JDBC 드라이버를 사용할 경우 Hive CLI 커맨드(모두 세미콜론 ;으로 종료)가 Beeline에서도 동작해요. Beeline에는 추가로 reload 커맨드가 있어서, hive.reloadable.aux.jars.path에 지정된 경로의 jar 변경을 HiveServer2 재시작 없이 반영해요(Hive 0.14.0+).

더 알아보기

  • Beeline 전용 옵션(-u, -n, -p, -e, -f 등)은 HiveServer2 Clients에서
  • Hive Resources 문서로 분산 캐시 동작 자세히 보기