Hive 사용
  • PDF

Hive 사용

  • PDF

이 가이드에서는 Object Storage 버킷에 데이터를 저장한 후, Hue와 Beeline을 통해 간단한 Hive 쿼리를 실행하는 방법을 설명합니다.

아키텍처 예시

계속 보관해야 하는 데이터는 Object Storage 버킷에 저장하고 Cloud Hadoop 클러스터는 필요할 때만 사용합니다.

chadoop-4-5-007_ko.png

Hive 쿼리를 실행하면 다음 단계로 쿼리가 실행됩니다.

  1. Hive 클라이언트에서 Cloud Hadoop 클러스터에 있는 Hive 서버로 쿼리 제출
  2. 서버는 쿼리를 처리하고, 마스터 서버에 설치된 Hive 메타데이터 데이터베이스(MySQL)에 메타데이터를 요청
  3. 서버는 Object Storage의 버킷 안에 저장된 데이터를 로드
  4. Hive 서버는 클라이언트로 결과를 반환

Hive 테이블 생성

예시) 네이버 클라우드 플랫폼 Object Storage 버킷에 샘플 데이터 파일을 업로드한 후 Hive에서 이 데이터를 사용할 수 있도록 Hive External Table을 생성

참고

Object Storage 버킷에 있는 데이터를 사용하기 위해서 hive-site.xml에 다음과 같은 구성이 필요합니다.

fs.s3a.access.key=API-ACCESS-KEY
fs.s3a.connection.ssl.enabled=false
fs.s3a.endpoint=http://kr.objectstorage.ncloud.com
fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
fs.s3a.secret.key=API-SECRET-KEY

Hive 테이블 생성을 생성하는 방법은 다음과 같습니다.

  1. 샘플 데이터를 다운로드해 주십시오. 압축을 해제한 후 AllstarFull.csv 파일을 Object Storage 버킷에 업로드해 주십시오.

    • Hive에서 데이터 파일의 location을 폴더 단위로 읽기 때문에, 폴더 하나에 데이터 하나를 저장해 주십시오.(권장)
    참고

    제공되는 샘플 데이터는 Lahman's Baseball Database 2012 버전의 일부로, 데이터의 모든 저작권은 Sean Lahman에게 있습니다.

chadoop-4-5-001_ko.png

  1. Ambari Hive View2.0 또는 Hue Hive 편집기에서 아래 구문으로 Hive External Table을 생성해 주십시오.

    • location: 데이터 셋 파일이 저장된 버킷 경로를 지정
    DROP table allstarfull;
    
    CREATE external TABLE if not EXISTS `allstarfull` (
            `playerID` VARCHAR(20),
            `yearID` INT,
            `gameNum` INT,
            `gameID` VARCHAR(30),
            `teamID` VARCHAR(4),
            `lgID` VARCHAR(4),
            `GP` INT,
            `startingPos` INT
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    location 's3a://deepdrive-hue/input/lahman2012/allstarfull';
    

Hive 쿼리 실행

Cloud Hadoop에서 제공하는 여러 도구를 사용해서 Hive 쿼리를 실행할 수 있습니다. 이 가이드에서는 다음 예의 툴로 Hive 쿼리를 실행하는 방법을 설명합니다.

  • Hive 쿼리 실행 툴 예
    • Hue의 Hive 인터프리터
    • Hive Clients 중 SQLLine CLI에 기반한 Beeline

Hue의 Hive 인터프리터

Hue의 Hive 인터프리터를 이용하여 Hive 쿼리를 실행하는 방법은 다음과 같습니다.

  1. Hue에 로그인한 후 Hive 인터프리터에서 HiveQL 쿼리를 실행해 주십시오.

    SELECT * FROM allstarfull LIMIT 10;
    
  2. 결과 화면을 통해 s3에 업로드한 파일이 Hive 테이블과 연결되었는지 확인해 주십시오.

    chadoop-4-5-002_ko.png

Beeline

Beeline을 이용하여 Hive 쿼리를 실행하는 방법은 다음과 같습니다.

  1. Hive 클라이언트가 설치된 호스트에 직접 접속한 후, 다음 명령어로 Beeline 세션을 시작해 주십시오.

    beeline -u "jdbc:hive2://[HIVE-SERVER2-SERVER]:10000" -n hive
    
    참고

    호스트 접속 방법은 SSH로 클러스터 노드 접속를 참조해 주십시오.

  2. Beeline 프롬프트가 표시되면 HiveQL 쿼리를 실행해 주십시오.

    • 아래 쿼리는 결과를 출력하지 않고, Object Storage에 저장합니다.
    beeline> INSERT OVERWRITE DIRECTORY 's3a://deepdrive-hue/output/' ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    SELECT playerid, sum(gp) from allstarfull group by playerid;
    
    참고

    쿼리를 저장하기 전에 Object Storage 버킷에 지정한 위치(디렉터리)가 존재하는지 확인해 주십시오.

  3. 다음 명령어를 실행하여 결과가 정상적으로 저장되었는지 확인해 주십시오.

    hadoop fs -cat s3a://deepdrive-hue/output/000000_0
    

    chadoop-4-5-003_ko.png

  4. 결과는 다음과 같습니다.

    aaronha01,24
    aasedo01,1
    abreubo01,2
    adamsac01,0
    adcocjo01,2
    ageeto01,2
    aguilri01,3
    aguirha01,1
    alexado01,0
    alfoned01,1
    allendi01,6
    allenjo02,1
    alleyge01,1
    allisbo01,2
    alomaro01,12
    ...
    

이 글이 도움이 되었나요?

What's Next