Hadoop Hive 데이터 탐험

HadoopBeginner
지금 연습하기

소개

2165 년, 지구는 수십 년간 지속된 대규모 전쟁으로 황폐화되었습니다. 살아남은 인류는 새로운 문명을 재건하기 위해 멀리 떨어진 행성으로 피난하여 새로운 식민지를 건설했습니다. 그중 하나인 Xylonia 행성에 위치한 식민지에는 Blaxters 라는 기술적으로 진보된 종족이 거주하고 있었습니다.

Blaxters 는 Hadoop 과 같은 첨단 시스템을 활용하여 방대한 양의 정보를 저장하고 처리하는 데이터 관리 기술을 마스터했습니다. Xylonian 식민지의 신임 데이터 엔지니어로서, 당신의 임무는 식민지의 생존과 성장에 필수적인 중요한 데이터를 효율적으로 저장하고 검색하기 위해 Hadoop Hive 데이터베이스 관리 시스템의 복잡성을 배우는 것입니다.

당신의 목표는 Blaxters 가 광대한 데이터 저장소를 관리하는 것을 돕는 것입니다. Hadoop Hive 의 강력한 기능을 활용하여 과학 연구, 자원 관리 및 전략적 계획에 필수적인 정보를 구성, 쿼리 및 분석하는 것입니다.

데이터베이스 생성

이 단계에서는 Hadoop Hive 에서 새로운 데이터베이스를 생성하는 방법을 배우게 됩니다. 이 데이터베이스는 식민지 데이터를 저장하고 구성하기 위한 중앙 저장소 역할을 합니다.

먼저, 터미널에서 다음 명령을 실행하여 hadoop 사용자로 로그인했는지 확인합니다.

su - hadoop

hadoop 사용자 환경에 접속한 후, /home/hadoop 디렉토리로 이동합니다.

cd /home/hadoop

이제 다음 명령을 실행하여 Hive 쉘을 시작합니다.

hive

Hive 쉘 내에서 다음 SQL 문을 사용하여 xylonia_colony라는 새 데이터베이스를 생성합니다.

CREATE DATABASE xylonia_colony;

데이터베이스가 성공적으로 생성되었는지 확인하려면 다음 명령을 사용하여 사용 가능한 모든 데이터베이스를 나열할 수 있습니다.

SHOW DATABASES;

이렇게 하면 새로 생성된 xylonia_colony 데이터베이스와 다른 기존 데이터베이스가 표시됩니다.

테이블 생성

이 단계에서는 식민지 자원과 관련된 데이터를 저장하기 위해 xylonia_colony 데이터베이스 내에 테이블을 생성하는 방법을 배우게 됩니다.

먼저, Hive 쉘에 있는지 확인합니다. 그렇지 않은 경우 다음 명령을 실행하여 시작합니다.

hive

다음 명령을 사용하여 xylonia_colony 데이터베이스로 전환합니다.

USE xylonia_colony;

resource_id (INT), resource_name (STRING), quantity (DOUBLE), unit (STRING) 열을 사용하여 resources라는 새 테이블을 생성합니다. 다음 SQL 문을 사용합니다.

CREATE TABLE resources (
    resource_id INT,
    resource_name STRING,
    quantity DOUBLE,
    unit STRING
);

테이블이 성공적으로 생성되었는지 확인하려면 다음 명령을 사용하여 xylonia_colony 데이터베이스의 모든 테이블을 나열합니다.

SHOW TABLES;

이렇게 하면 resources 테이블이 표시됩니다.

데이터 삽입

이 단계에서는 이전 단계에서 생성한 resources 테이블에 데이터를 삽입하는 방법을 배우게 됩니다.

먼저, Hive 쉘에 있는지 확인합니다. 그렇지 않은 경우 다음 명령을 실행하여 시작합니다.

hive

다음 명령을 사용하여 xylonia_colony 데이터베이스로 전환합니다.

USE xylonia_colony;

다음 SQL 문을 사용하여 resources 테이블에 샘플 데이터를 삽입합니다.

INSERT INTO resources VALUES (1, 'Oxygen', 500.0, 'Tons');
INSERT INTO resources VALUES (2, 'Water', 1000.0, 'Gallons');
INSERT INTO resources VALUES (3, 'Food', 200.0, 'Tons');

데이터가 성공적으로 삽입되었는지 확인하려면 다음 명령을 사용하여 resources 테이블을 쿼리합니다.

SELECT * FROM resources;

이렇게 하면 삽입한 세 개의 데이터 행이 표시됩니다.

데이터 쿼리

이 단계에서는 다양한 SQL 문을 사용하여 resources 테이블에서 데이터를 쿼리하는 방법을 배우게 됩니다.

먼저, Hive 쉘에 있는지 확인합니다. 그렇지 않은 경우 다음 명령을 실행하여 시작합니다.

hive

다음 명령을 사용하여 xylonia_colony 데이터베이스로 전환합니다.

USE xylonia_colony;

quantity가 500 보다 큰 모든 자원을 검색하기 위해 resources 테이블을 쿼리합니다.

SELECT * FROM resources WHERE quantity > 500;

이렇게 하면 quantity 열 값이 500 보다 큰 행이 표시됩니다.

SUM 또는 AVG와 같은 집계 함수도 데이터에 대해 수행할 수 있습니다. 예를 들어, 모든 자원의 총 수량을 계산합니다.

SELECT SUM(quantity) AS total_quantity FROM resources;

이렇게 하면 resources 테이블의 모든 quantity 값의 합계가 표시됩니다.

파티션 테이블 생성

이 단계에서는 스캔해야 하는 데이터 양을 줄여 쿼리 성능을 향상시킬 수 있는 Hive 에서 파티션 테이블을 만드는 방법을 배우게 됩니다.

먼저, Hive 쉘에 있는지 확인합니다. 그렇지 않은 경우 다음 명령을 실행하여 시작합니다.

hive

다음 명령을 사용하여 xylonia_colony 데이터베이스로 전환합니다.

USE xylonia_colony;

sensor_id (INT), sensor_name (STRING), reading (DOUBLE) 열을 가지고 dt (STRING) 로 파티션된 sensor_data라는 새 파티션 테이블을 생성합니다.

CREATE TABLE sensor_data (
    sensor_id INT,
    sensor_name STRING,
    reading DOUBLE
)
PARTITIONED BY (dt STRING);

파티션 테이블에 데이터를 삽입하려면 열 값과 함께 파티션 키 값을 지정해야 합니다. 예를 들어:

INSERT INTO sensor_data PARTITION (dt='2023-05-01')
VALUES (1, 'Temperature Sensor', 25.5), (2, 'Humidity Sensor', 60.0);

이렇게 하면 2023-05-01의 dt 로 파티션된 두 개의 데이터 행이 sensor_data 테이블에 삽입됩니다.

다른 테이블과 마찬가지로 파티션 테이블을 쿼리할 수 있지만 파티션 키를 기반으로 데이터를 필터링할 수도 있습니다.

SELECT * FROM sensor_data WHERE dt='2023-05-01';

이렇게 하면 2023-05-01에 해당하는 파티션만 스캔하여 쿼리 성능을 잠재적으로 향상시킵니다.

요약

이 랩에서는 Hadoop 생태계 내의 강력한 데이터 웨어하우징 도구인 Hadoop Hive 에서 데이터베이스와 테이블을 관리하는 방법을 배웠습니다. 새로운 데이터베이스와 테이블을 생성하고, 데이터를 삽입하고, SQL 문을 사용하여 데이터를 쿼리했습니다. 또한 스캔해야 하는 데이터 양을 줄여 쿼리 성능을 향상시킬 수 있는 파티션 테이블을 탐색했습니다.

이러한 실습 경험을 통해 Blaxters 의 고급 데이터 관리 시스템에서 중요한 구성 요소인 Hadoop Hive 를 사용하여 데이터 저장소를 관리하는 실질적인 기술을 습득했습니다. 이러한 기술을 마스터함으로써 과학 연구, 자원 관리 및 전략적 계획에서 Xylonian 식민지의 노력을 지원하는 데 중요한 발걸음을 내디뎠습니다.