Hadoop 을 이용한 반란군 데이터 재구성

HadoopBeginner
지금 연습하기

소개

머나먼 은하계에서 폭압적인 은하 제국은 수많은 행성을 정복하고 자원을 착취하며 그들의 백성을 억압하고 있습니다. 반란군 지도자 레아 공주는 제국에 대항하는 반란을 조정해 왔지만, 그녀의 세력은 수적으로나 무력에서나 열세입니다. 전쟁의 흐름을 바꾸기 위해 레아는 제국의 약점을 파악하고 전략적 공격을 계획하기 위해 방대한 양의 정보 데이터를 분석해야 합니다.

이 랩의 목표는 레아 공주와 반란군이 Hadoop Hive 의 강력한 기능을 활용하여 대규모 데이터 세트를 관리하고 조작하는 것을 돕는 것입니다. 특히 기존 Hive 테이블을 변경하는 방법을 배우는 것을 목표로 합니다. 이 기술을 숙달함으로써 레아는 정보 데이터베이스를 효율적으로 재구성하여 중요한 통찰력을 발견하고 제국에 대한 전략적 우위를 확보할 수 있습니다.

샘플 테이블 생성

이 단계에서는 작업할 샘플 Hive 테이블을 생성합니다. 이 테이블은 은하계의 다양한 행성에 대한 정보, 즉 이름, 인구 및 자원을 저장합니다.

먼저, 터미널에서 다음 명령을 실행하여 hadoop 사용자로 전환합니다.

su - hadoop

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

hive

Hive CLI 내에서 rebel_intel이라는 새 데이터베이스를 생성합니다.

CREATE DATABASE rebel_intel;

rebel_intel 데이터베이스를 사용합니다.

USE rebel_intel;

다음 스키마를 사용하여 planets라는 새 테이블을 생성합니다.

CREATE TABLE planets (
    planet_id INT,
    planet_name STRING,
    population BIGINT,
    resources ARRAY<STRING>
)
CLUSTERED BY (planet_id) INTO 2 BUCKETS
STORED AS ORC
TBLPROPERTIES ('transactional'='true');

이 테이블에는 네 개의 열이 있습니다: planet_id (행성의 ID 를 위한 정수), planet_name (행성의 이름을 위한 문자열), population (행성의 인구를 위한 큰 정수), 그리고 resources (행성의 자원을 나타내는 문자열 배열).

exit;를 입력하여 Hive CLI 를 종료합니다.

테이블에 데이터 추가

이 단계에서는 planets 테이블에 몇 가지 샘플 데이터를 채웁니다. 이 데이터는 반란군이 은하계의 다양한 행성에 대해 수집한 정보를 나타냅니다.

Hive CLI 를 다시 시작합니다.

hive

rebel_intel 데이터베이스를 사용합니다.

USE rebel_intel;

planets 테이블에 몇 가지 샘플 데이터를 삽입합니다.

INSERT INTO planets VALUES
    (1, 'Alderaan', 2000000000, array('Agriculture', 'Energy')),
    (2, 'Tatooine', 200000, array('Mining')),
    (3, 'Hoth', 0, array('None')),
    (4, 'Endor', 30000, array('Forestry', 'Hunting')),
    (5, 'Bespin', 6000000, array('Gas Mining', 'Tourism'));

이것은 planets 테이블에 다섯 개의 데이터 행을 삽입하여 각 행성의 행성 ID, 이름, 인구 및 자원을 나타냅니다.

exit;를 입력하여 Hive CLI 를 종료합니다.

테이블 구조 변경

이제 데이터가 있는 테이블이 있으므로, 레아 공주가 각 행성의 기후에 대한 정보를 저장하기 위해 다른 열을 추가해야 한다고 가정해 보겠습니다. 이 단계에서는 기존 Hive 테이블의 구조를 변경하는 방법을 배웁니다.

Hive CLI 를 시작합니다.

hive

rebel_intel 데이터베이스를 사용합니다.

USE rebel_intel;

planets 테이블을 변경하여 climate라는 새 열을 추가합니다.

ALTER TABLE planets ADD COLUMNS (climate STRING);

이 명령은 STRING 유형의 climate라는 새 열을 planets 테이블에 추가합니다.

업데이트된 테이블 구조를 확인합니다.

DESCRIBE planets;

테이블 스키마에서 새로운 climate 열을 볼 수 있습니다.

exit;를 입력하여 Hive CLI 를 종료합니다.

테이블 데이터 업데이트

planets 테이블에 새로운 climate 열이 추가되었으므로, 이제 각 행성의 기후 정보를 포함하도록 기존 데이터를 업데이트할 수 있습니다.

Hive CLI 를 시작합니다.

hive

rebel_intel 데이터베이스를 사용합니다.

USE rebel_intel;

각 행성의 climate 열을 업데이트합니다.

UPDATE planets SET climate = 'Temperate' WHERE planet_name = 'Alderaan';
UPDATE planets SET climate = 'Arid' WHERE planet_name = 'Tatooine';
UPDATE planets SET climate = 'Frozen' WHERE planet_name = 'Hoth';
UPDATE planets SET climate = 'Tropical' WHERE planet_name = 'Endor';
UPDATE planets SET climate = 'Artificial' WHERE planet_name = 'Bespin';

이러한 UPDATE 문은 각 행성의 이름에 따라 해당 행성의 climate 값을 설정합니다.

업데이트된 데이터를 확인합니다.

SELECT * FROM planets;

각 행성에 대한 업데이트된 climate 값을 볼 수 있습니다.

exit;를 입력하여 Hive CLI 를 종료합니다.

요약

이 랩에서는 대규모 데이터 세트를 관리하고 재구성하는 데 필수적인 기술인 Hadoop Hive 에서 테이블을 변경하는 개념을 탐구했습니다. 샘플 planets 테이블을 생성하고, 데이터를 추가한 다음, 새로운 climate 열을 포함하도록 테이블 구조를 변경함으로써, 진화하는 요구 사항을 충족하기 위해 데이터 모델을 조정하는 방법을 배웠습니다.

이 랩의 디자인은 반란군 지도자인 레아 공주가 은하 제국의 방어의 약점을 파악하기 위해 정보 데이터를 분석해야 하는 상징적인 스타워즈 세계관에서 영감을 받았습니다. Hive 의 테이블 변경 기능을 마스터함으로써 레아는 정보 데이터베이스를 효율적으로 재구성하여 귀중한 통찰력을 발견하고 압제적인 제국에 대한 반란에서 전략적 이점을 얻을 수 있습니다.

이 실습 경험을 통해 Hadoop 환경에서 대규모 데이터 세트로 작업하는 데 필수적인 기술인 Hive 테이블을 생성, 수정 및 업데이트하는 방법에 대한 더 깊은 이해를 얻었습니다. 또한 체커 (checkers) 를 사용하여 각 단계에서 진행 상황을 확인할 수 있었고, 학습을 강화하고 랩 목표를 성공적으로 완료할 수 있었습니다.