HPL/SQL 레퍼런스

HPL/SQL 레퍼런스 (Reference)

HPL/SQL(Hive Hybrid Procedural SQL On Hadoop)은 Hive에서 절차적 SQL(procedural SQL)을 구현할 수 있게 해주는 도구예요. Hive 2.0.0부터 사용할 수 있고(HIVE-11055), 거의 모든 절차적 SQL 방언의 문법과 의미를 이해하는 하이브리드·이종 언어라서 기존 PL/SQL이나 Transact-SQL 경험을 그대로 Hadoop에 옮겨올 수 있답니다.

출처: 문서

본문

Hive Hybrid Procedural SQL On Hadoop(HPL/SQL)은 Hive를 위한 절차적 SQL을 구현하는 도구예요. Hive 2.0.0에서 사용할 수 있어요(HIVE-11055).

HPL/SQL은 Apache Hive, SparkSQL, Impala 뿐만 아니라 다른 어떤 SQL-on-Hadoop 구현체, NoSQL, RDBMS를 위한 절차적 SQL 언어를 구현하는 오픈 소스 도구(Apache License 2.0)예요.

HPL/SQL은 거의 모든 기존 절차적 SQL 방언의 문법과 의미를 이해하는 하이브리드·이종 언어로, 어떤 데이터베이스와도 함께 사용할 수 있어요. 예를 들어 기존 Oracle PL/SQL 코드를 Apache Hive와 Microsoft SQL Server에서 실행하거나, Transact-SQL을 Oracle, Cloudera Impala, Amazon Redshift에서 실행할 수 있어요.

HPL/SQL 언어는 Oracle PL/SQL, ANSI/ISO SQL/PSM(IBM DB2, MySQL, Teradata 등), PostgreSQL PL/pgSQL(Netezza), Transact-SQL(Microsoft SQL Server와 Sybase)과 상당 부분 호환돼서, 기존 SQL/DWH 스킬과 익숙한 접근 방식을 활용해 Hadoop에 데이터 웨어하우스 솔루션을 구현할 수 있어요. 또한 기존 비즈니스 로직을 Hadoop으로 마이그레이션하기도 쉬워요.

HPL/SQL은 Hadoop에서 ETL 프로세스를 구현하는 효율적인 방법이에요.

처음에는 독립 실행형(command line) 도구로 제공됐지만, (HIVE-24230)의 일부로 HPL/SQL은 HiveServer(HS2)에 통합되는 방식으로 재구성됐어요. Beeline 같은 JDBC 클라이언트에서 HiveServer에 연결하면, 인터프리터가 파서에서 생성된 추상 구문 트리(AST)를 실행해요. Hive metastore는 함수와 프로시저 코드를 안전하게 영구 저장해요. 프로시저는 필요할 때 인터프리터 메모리에 요청 시 로드되고 캐시돼요. 세션을 닫거나 HiveServer를 다시 시작해도 정의가 유실되지 않아요.

시작하기 (Getting Started)

사용자 가이드 (User Guide)

언어 요소 (Language Elements)

연산자 (Operators)

속성 및 내장 변수 (Attributes and Built-in Variables)

이름 설명
ACTIVITY_COUNT 마지막 SQL 문의 영향을 받은 행 수
SQLCODE 마지막 SQL 문의 반환 코드
SQLSTATE 마지막 SQL 문의 반환 상태

문 (Statements)

설명
ALLOCATE CURSOR 프로시저 결과 집합을 위한 커서 할당
ASSOCIATE RESULT SET LOCATOR 프로시저 결과 집합을 위한 locator 정의
BREAK 루프 종료
CALL 저장 프로시저 실행
CLOSE 커서 닫기
CMP 테이블의 데이터 비교
CREATE DATABASE 데이터베이스 생성
CREATE FUNCTION 사용자 정의 SQL 함수 생성
CREATE LOCAL TEMPORARY TABLE 세션 수준 임시 테이블 생성
CREATE PACKAGE 프로그램 패키지 생성
CREATE PROCEDURE 사용자 정의 SQL 프로시저 생성
CREATE TABLE 테이블 생성
CREATE VOLATILE TABLE 세션 수준 임시 테이블 생성
DECLARE 변수 선언
DECLARE CONDITION 조건(condition) 선언
DECLARE CURSOR 커서 선언
DECLARE HANDLER 조건 핸들러 선언
DECLARE TEMPORARY TABLE 임시 테이블 선언
DESCRIBE 데이터베이스 객체 설명
DROP DATABASE 데이터베이스 삭제
DROP TABLE 테이블 삭제
EXEC / EXECUTE / EXECUTE IMMEDIATE 동적 SQL 문 또는 프로시저 실행
EXIT WHEN 루프 종료
FETCH 커서에서 다음 행 가져오기
FOR cursor FOR 문 (커서 루프)
FOR range FOR 문 (정수 범위)
GET DIAGNOSTICS 실행 정보 가져오기
IF IF 문
INCLUDE 다른 스크립트의 문 포함
INSERT INSERT 문
INSERT DIRECTORY 쿼리 결과를 파일로 쓰기
LEAVE 루프 종료
OPEN 커서 열기
LOOP 무조건 루프
MAP OBJECT 객체 이름을 커넥션 프로파일에 매핑
NULL no-op(아무것도 안 함) 문
PRINT 한 줄 출력
RESIGNAL 예외 다시 발생
RETURN 루틴에서 반환
SELECT SELECT 문
SELECT INTO 쿼리에서 값 할당
SIGNAL 조건 또는 예외 발생
SET 변수에 값 할당
SET Session Option 세션 옵션 설정
TRUNCATE 테이블 비우기
UPDATE UPDATE 문
USE 기본 데이터베이스 변경
VALUES INTO 변수에 값 할당
WHILE WHILE 루프

함수 (Functions)

함수 설명
CAST 데이터 타입으로 변환
CHAR 문자열로 변환
COALESCE 첫 번째 NULL이 아닌 값 반환
CONCAT 두 개 이상의 문자열 연결
CURRENT_DATE 현재 날짜(년, 월, 일) 가져오기
CURRENT_TIMESTAMP 현재 날짜와 시간 가져오기
CURRENT_USER 현재 사용자 이름 가져오기
DATE 날짜로 변환
DECODE IF-THEN-ELSE 로직 구현
DBMS_OUTPUT.PUT_LINE 한 줄 출력
FROM_UNIXTIME 1970-01-01 이후 초수를 타임스탬프로 변환
INSTR 문자열에서 부분 문자열의 인덱스 찾기
LOWER 문자열을 소문자로 변환
LEN 끝의 공백을 제외한 문자열 길이
LENGTH 문자열 길이
MAX_PART_STRING 최대 파티션 값(문자열) 가져오기
MIN_PART_STRING 최소 파티션 값(문자열) 가져오기
MAX_PART_INT 최대 파티션 값(int) 가져오기
MIN_PART_INT 최소 파티션 값(int) 가져오기
MAX_PART_DATE 최대 파티션 값(date) 가져오기
MIN_PART_DATE 최소 파티션 값(date) 가져오기
NOW 현재 날짜와 시간 가져오기
NVL 첫 번째 NULL이 아닌 값 반환
NVL2 첫 번째 피연산자가 NULL이면 3번째, 아니면 2번째 반환
PART_LOC 파티션 위치 가져오기
PART_COUNT 파티션 개수 가져오기
PART_COUNT_BY 파티션 개수 가져오기 (그룹별)
REPLACE 문자열 교체
SUBSTR 부분 문자열 반환
SUBSTRING 부분 문자열 반환
SYSDATE 현재 날짜와 시간 가져오기
TIMESTAMP_ISO 문자열을 타임스탬프로 변환
TO_CHAR 문자열로 변환
TO_TIMESTAMP 문자열을 타임스탬프로 변환
TRIM 앞뒤 문자 제거
UNIX_TIMESTAMP 1970-01-01 이후 초 단위의 현재 날짜·시간 가져오기
UPPER 문자열을 대문자로 변환
USER 현재 사용자 이름 가져오기

파일 I/O 연산 (File I/O Operations)

호환성 (Compatibility)

더 알아보기 (Learn more)