HCatalog 커맨드 라인 인터페이스

HCatalog 커맨드 라인 인터페이스 (CLI)

HCatalog의 커맨드 라인 인터페이스(CLI)는 hcat 명령으로 실행할 수 있어요. 테이블 그룹·권한 설정, DDL 파일 실행 등 다양한 옵션을 지원합니다.

출처: 문서

본문

설정 (Set Up)

HCatalog CLI는 다음과 같이 호출할 수 있어요.

HIVE_HOME=/hive_home /hcat_home/bin/hcat

hive_home은 Hive가 설치된 디렉토리, hcat_home은 HCatalog가 설치된 디렉토리예요. BigTop의 rpm이나 deb을 사용한다면 /usr/bin/hcat으로 CLI를 호출할 수 있습니다.

HCatalog CLI 옵션

Option Usage Description
-g hcat -g mygroup ... 생성할 테이블이 그룹 "mygroup"을 가져야 한다고 HCatalog에 알림
-p hcat -p rwxr-xr-x ... 생성할 테이블이 권한 "rwxr-xr-x"를 가져야 한다고 알림
-f hcat -f myscript.hcatalog ... myscript.hcatalog가 실행할 DDL 명령을 담은 파일임을 알림
-e hcat -e 'create table mytable(a int);' ... 다음 문자열을 DDL 명령으로 취급해 실행
-D hcat -D key=value ... key-value 쌍을 Java System Property로 HCatalog에 전달
(인자 없음) hcat 사용법 메시지 출력

다음 사항에 유의하세요.

  • -g-p 옵션은 필수가 아니에요.
  • -e 또는 -f 옵션 중 하나만 제공할 수 있고, 둘 다는 안 됩니다.
  • 옵션의 순서는 무관합니다. 어떤 순서로든 지정할 수 있어요.
  • 옵션이 없으면 사용법 메시지가 출력됩니다.
Usage:  hcat  { -e "<query>" | -f <filepath> }  [-g <group>] [-p <perms>] [-D<name>=<value>]

소유자 권한 (Owner Permissions)

HCatalog CLI에서 소유자 읽기 권한이 없는 권한 문자열(예: -wxrwxr-x)은 문자열이 -로 시작하기 때문에 지정할 수 없어요. 이런 권한을 원한다면 8진수 버전을 사용할 수 있는데, 이 경우 375가 됩니다. 소유자 읽기 권한이 있는 다른 모든 형태(예: r-x----- 또는 r--r--r--)는 문제없이 동작해요.

Hive CLI

많은 hcat 명령(모든 HCatalog DDL 명령 포함)을 hive 명령으로 실행할 수 있어요. Hive CLI에는 HCatalog CLI에서 사용할 수 없는 일부 명령도 있습니다. 차이점을 정리하면 다음과 같아요.

  • 테이블 그룹·권한 설정을 위한 hcat -ghcat -p는 HCatalog CLI에서만 사용 가능해요.
  • hcat은 권한에 -p 플래그를 쓰지만, hive-p를 포트 번호 지정에 사용합니다.
  • hcat은 공백 없이 -D 플래그로 key=value 쌍을 정의하지만, hive는 공백과 함께 -d 또는 --define을 사용해요 (또한 --hivevar).
    • 예: hcat -DA=B vs hive -d A=B
  • hcat은 플래그 없이 도움말을 출력하지만, hive-H 플래그 또는 --help를 사용합니다.

HCatalog DDL

HCatalog는 MapReduce 작업 실행이 필요한 연산을 제외한 모든 Hive DDL(Data Definition Language)을 지원해요. 지원되는 명령의 차이는 아래에 정리했습니다.

HCatalog는 다음 Hive DDL 및 HiveQL 명령을 지원하지 않습니다.

  • ALTER INDEX ... REBUILD
  • CREATE TABLE ... AS SELECT
  • ALTER TABLE ... CONCATENATE
  • ALTER TABLE ARCHIVE/UNARCHIVE PARTITION
  • ANALYZE TABLE ... COMPUTE STATISTICS
  • IMPORT FROM ...
  • EXPORT TABLE

Create/Drop/Alter Table

  • CREATE TABLE: CLUSTERED BY 절로 테이블을 만들면 Pig나 MapReduce로 그 테이블에 쓸 수 없어요. 그들은 테이블을 파티션하는 방법을 이해하지 못해 쓰기를 시도하면 데이터가 손상되기 때문입니다.
  • CREATE TABLE AS SELECT: 지원되지 않음. "Operation Not Supported" 메시지와 함께 예외를 던져요.
  • DROP TABLE: 지원됨. Hive와 동일한 동작.
  • ALTER TABLE: REBUILDCONCATENATE 옵션을 제외하고 지원됨. Hive와 동일한 동작.

Create/Drop/Alter View

참고: Pig와 MapReduce는 view를 읽거나 쓸 수 없어요.

  • CREATE VIEW: 지원됨. Hive와 동일.
  • DROP VIEW: 지원됨. Hive와 동일.
  • ALTER VIEW: 지원됨. Hive와 동일.

Show/Describe

  • SHOW TABLES: 지원됨. Hive와 동일.
  • SHOW PARTITIONS: 지원되지 않음. "Operation Not Supported" 예외를 던져요.
  • SHOW FUNCTIONS: 지원됨. Hive와 동일.
  • DESCRIBE: 지원됨. Hive와 동일.

Create/Drop Index

CREATEDROP INDEX 연산은 지원돼요. 참고: Pig와 MapReduce는 auto rebuild가 켜진 테이블에 쓸 수 없어요. 그들은 인덱스를 재구성하는 방법을 모르기 때문입니다.

Create/Drop Function

CREATEDROP FUNCTION 연산은 지원돼요. 단, 생성된 함수는 여전히 Pig에 등록되고 MapReduce용 CLASSPATH에 배치되어야 합니다.

"dfs" 명령과 "set" 명령

지원됨. Hive와 동일한 동작.

기타 명령

위에 나열되지 않은 어떤 명령도 지원되지 않으며 "Operation Not Supported" 예외를 던져요.

CLI 오류 (CLI Errors)

인증 (Authentication)

/tmp/<username>/hive.log"2010-11-03 16:17:28,225 WARN hive.metastore ... - Unable to connect metastore with URI thrift://..." 같은 실패 메시지가 나타나면, Kerberos 티켓을 받아 HCatalog 서버에 인증할 수 있도록 kinit <username>@FOO.COM을 실행했는지 확인하세요.

오류 로그 (Error Log)

HCatalog CLI를 사용하는 동안 다른 오류가 발생하면 더 자세한 메시지가 /tmp/<username>/hive.log에 기록됩니다.

Navigation Links: Previous: Reader and Writer Interfaces / Next: Storage Formats. Hive CLI: Hive CLI, Hive DDL: Hive Data Definition Language, WebHCat DDL 리소스: WebHCat Reference: DDL

더 알아보기 (Learn more)

hcat은 HCatalog 테이블 메타데이터를 관리하는 가장 직접적인 도구예요. 지원 범위(특히 CTAS·SHOW PARTITIONS 미지원)를 기억해 두면 Hive CLI와의 차이로 인한 혼란을 피할 수 있습니다.