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 언어 참조 문서들을 함께 읽어보세요. 이 사용자 가이드가 실무 작성의 출발점이 됩니다.