HPL/SQL 사용자 가이드

HPL/SQL 사용자 가이드 (User Guide)

HPL/SQL 사용자 가이드는 설정(configuration), 오류 처리, UDF·저장 프로시저, 임시 테이블, SQL 변환 같은 핵심 주제를 다루는 문서 모음이에요. HPL/SQL로 실무 코드를 작성하기 전에 이 가이드부터 시작해요.

출처: 문서

본문

HPL/SQL 설정(Configurations)

HPL/SQL 스크립트 안에서 SET 문으로 모든 옵션을 동적으로 설정할 수 있습니다: SET option=value;

hplsql.onerror 옵션은 HPL/SQL이 오류를 처리하는 방식을 정의합니다.

값:

  • exception - 오류가 발생하면 HPL/SQL이 예외를 발생시킵니다. 기본값입니다.
  • seterror - 오류 코드를 SQLCODE 변수에 설정하고 실행을 계속합니다.
  • stop - 스크립트 실행을 멈추고 종료합니다.

자세한 내용은 Error Handling을 참고하세요.

HPL/SQL - 오류 처리(Error Handling)

HPL/SQL은 예외, 조건 핸들러, 오류 코드를 사용해 오류를 처리할 수 있습니다. hplsql.onerror 설정이 처리 방식을 결정하며, exception(기본), seterror, stop 값을 받습니다.

HPL/SQL - Beeline에서 non-hplsql 모드로 HPL/SQL 스크립트를 실행하는 Hive UDF

HPL/SQL에는 HPL/SQL 언어로 작성된 스크립트(사용자 정의 함수)를 Hive 쿼리에서 실행할 수 있는 Hive UDF 함수(hplsql)가 포함되어 있습니다. 예를 들어 Hive 쿼리에서 다음 함수를 호출할 수 있습니다:

CREATE FUNCTION hello(text STRING)
 RETURNS STRING
BEGIN
 RETURN 'Hello, ' || text || '!';
END;

HPL/SQL - 네이티브·관리형 임시 테이블(Native and Managed Temporary Tables)

HPL/SQL은 임시 테이블을 다루는 두 가지 옵션인 native와 managed를 제공합니다. hplsql.temp.tables 옵션으로 임시 테이블 처리 방식을 정하며 기본값은 native 입니다.

네이티브 임시 테이블: 네이티브 임시 테이블을 사용하면 HPL/SQL은 기본 HiveServer가 임시 테이블을 관리하도록 합니다. HPL/SQL은 DECLARE TEMPORARY TABLE 문을 Hive의 CREATE TEMPORARY TABLE로 변환합니다.

HPL/SQL - Hive에서의 즉석 SQL 변환(On-the-Fly SQL Conversion)

HPL/SQL은 많은 절차형 방언을 지원해 기존 코드를 변경 없이 재사용할 수 있게 해줍니다. 하지만 모든 문장이 HPL/SQL에 의해 실행되는 것은 아니고, 일부는 HiveServer가 실행해야 합니다.

IF code = 'A' THEN
  CREATE TABLE dept 
  (
    deptno NUMBER(2,0),
    dname  NUMBER(14),
    loc    VARCHAR2(13),
    CONSTRAINT pk_dept PRIMARY KEY (deptno)
  );
END IF;

이 예제에서 IF 문은 HPL/SQL 자신이 실행합니다. code 변수의 값을 확인하고 'A'와 같으면 HPL/SQL이 CREATE TABLE 문을 실행합니다.

HPL/SQL - 사용자 정의 함수와 저장 프로시저(UD-Functions and Stored Procedures)

HPL/SQL은 각각 CREATE FUNCTION 문과 CREATE PROCEDURE 문을 사용해 사용자 정의 함수와 저장 프로시저를 정의할 수 있게 해줍니다.

현재 스크립트에서 함수·프로시저 정의하기: 가장 쉬운 방법은 실제 사용 전에 현재 스크립트 안에서 정의하는 것입니다. 예를 들어:

CREATE FUNCTION hello(text STRING)
 RETURNS STRING
BEGIN
 RETURN 'Hello, ' || text || '!';
END;

CREATE PROCEDURE set_message(IN name STRING, OUT result STRING)
BEGIN
 SET result = 'Hello, ' || name || '!';
END;

-- 함수 호출
PRINT hello('world');

-- 프로시저 호출 후 결과 출력
DECLARE str STRING;
CALL set_message('world', str);
PRINT str;

한번 정의되면 함수/프로시저의 메타데이터가 HMS에 영구 저장되고, 어떤 HPL/SQL·HQL 표현식에서든 내장 함수처럼 사용할 수 있습니다. 프로시저는 CALL 문으로 호출할 수 있습니다.

더 알아보기 (Learn more)

HPL/SQL을 왜 쓰는지부터 살펴보려면 Why HPL/SQL 문서를, 핵심 문법과 함수 목록은 HPL/SQL 언어 참조 문서들을 함께 읽어보세요. 이 사용자 가이드가 실무 작성의 출발점이 됩니다.