HDFS Connector 사용
Tibero HDFS Connector의 사용 방법에 대해서 설명합니다.
HDFS External Table 생성
HDFS Connector를 사용하는 External Table의 생성 문법은 일반 External Table 생성 문법과 동일합니다. 단, 파일 목록에 아래와 같이 HDFS 정보를 지정합니다.
hdfs://[HDFS Namenode IP 또는 hostname][:Port]/[File Path]
위 문법에서 Port는 옵션이며, 지정하지 않는 경우 기본 포트인 8020을 사용합니다.
아래는 HDFS Connector를 사용하는 External Table을 정의하는 예시입니다.
CREATE DIRECTORY TMP_DIR AS '/home/tibero/';
CREATE TABLE HDFS_EXT
( ID NUMBER(10),
TEXT VARCHAR(64)
) ORGANIZATION EXTERNAL
( DEFAULT DIRECTORY
TMP_DIR ACCESS PARAMETERS
(
LOAD DATA INTO TABLE HDFS_EXT
FIELDS TERMINATED BY '|'
(ID, TEXT)
) LOCATION (
'hdfs://hadoop_name/user/tibero/f0.txt',
'hdfs://hadoop_name/user/tibero/f1.txt',
'hdfs://hadoop_name/user/tibero/f2.txt'
)
위의 예에서는 세 개의 HDFS 파일에 대한 External Table을 만들었습니다. HDFS Namenode의 호스트 네임은 hadoop_name이며, 기본 포트인 8020으로 접속합니다. 그리고 HDFS 상의 /user/tibero 폴더에 있는 세 개의 파일 f0.txt, f1.txt, f2.txt를 읽습니다.
Directory 오브젝트는 External Table을 만드는 DDL의 문법상 필요할 뿐 HDFS 파일의 경로에는 영향을 미치지 않습니다. External Table을 생성할 때 HDFS 파일만 지정할 수 있는 것이 아니라 로컬 파일 시스템의 파일도 함께 지정할 수 있으며 External Table에서 사용 가능한 모든 기능을 동일하게 사용할 수 있습니다.
HDFS Connector를 사용한 질의 방법
HDFS Connector를 사용해 SQL을 실행하기 위해서는 External Table을 생성하고 생성한 테이블에 대해 질의를 수행합니다.
External Table 인터페이스를 사용하므로 Tibero에서 제공하는 질의의 모든 기능을 사용할 수 있고, 일반 Tibero의 테이블과 조인 연산을 수행할 수 있으며, 다양한 집계 함수, UDF 등의 적용도 가능합니다.
아래는 HDFS Connector를 사용해 질의를 수행하는 예시입니다.
SELECT COUNT(*), AVG(PEOPLE.AGE)
FROM HDFS_EXT, PEOPLE
WHERE HDFS_EXT.ID = PEOPLE.ID
GROUP BY HDFS_EXT.TEXT;
아래와 같이 /*+ parallel */ 힌트를 사용해 일반 테이블과 마찬가지로 병렬 실행도 가능합니다.
SELECT /*+ parallel (8) */ COUNT(*), AVG(PEOPLE.AGE)
FROM HDFS_EXT, PEOPLE
WHERE HDFS_EXT.ID = PEOPLE.ID
GROUP BY HDFS_EXT.TEXT;
병렬 실행을 사용하는 경우에는 HDFS 파일을 HDFS 블록 단위로 나눠 병렬 스캔하므로 질의 수행 성능을 향상시킬 수 있다. 하지만 HDFS Connector의 External Table에 대해서는 DML 문을 수행할 수는 없습니다.
Last updated