Hadoop 마법으로 유적 데이터 분석

HadoopBeginner
지금 연습하기

소개

황량한 사막 황무지의 중심부에서, 외로운 인물이 오랫동안 버려진 도시의 잔해 속을 거닐고 있습니다. 이곳은 폐허 속에서 아름다움을, 잊혀진 것에서 잠재력을 발견하는 비전가인 Ruin Artist 의 영역입니다. 그들의 목표는 폐허 속에 숨겨진 이야기를 발굴하고, 예술을 통해 무너져가는 구조물에 새로운 생명을 불어넣는 것입니다.

Ruin Artist 는 한때 웅장했던 도서관의 여러 조각에 흩어져 있는 고대 데이터의 보고를 발견했습니다. 이 풍부한 정보를 이해하고 혼돈에 질서를 부여하기 위해, 그들은 Hadoop 의 강력한 데이터 처리 능력, 특히 Hive 의 group by 기능을 활용해야 합니다.

환경 설정

이 단계에서는 환경을 설정하고 분석을 위한 데이터를 준비합니다.

  1. 터미널을 열고 다음 명령을 실행하여 hadoop 사용자로 전환합니다.
su - hadoop
  1. /home/hadoop 디렉토리로 이동합니다.
cd /home/hadoop
  1. 데이터 세트를 저장할 ruin-data라는 새 디렉토리를 생성합니다.
mkdir ruin-data
  1. 샘플 데이터 세트를 ruin-data 디렉토리로 이동합니다.
cp /tmp/ruin-dataset.txt ruin-data/

이 데이터 세트에는 유물 유형, 위치 및 상태를 포함하여 폐허에서 발견된 다양한 유물에 대한 정보가 포함되어 있습니다.

데이터셋 탐색

이 단계에서는 데이터 세트를 Hive 에 로드하고 구조를 탐색합니다.

  1. 다음 명령을 실행하여 Hive 셸을 시작합니다.
hive
  1. ruin_analysis라는 새 데이터베이스를 생성합니다.
CREATE DATABASE ruin_analysis;
  1. ruin_analysis 데이터베이스를 사용합니다.
USE ruin_analysis;
  1. ruin-dataset.txt 파일의 데이터를 저장하기 위해 artifacts라는 새 외부 테이블을 생성합니다.
CREATE EXTERNAL TABLE artifacts (
  artifact_id INT,
  artifact_type STRING,
  location STRING,
  condition STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

이 명령은 artifact_id, artifact_type, location, condition의 네 개의 열이 있는 새 테이블을 생성합니다. 이 테이블은 /home/hadoop/ruin-data 디렉토리에 저장된 쉼표로 구분된 텍스트 파일인 ruin-dataset.txt 파일에서 데이터를 읽도록 구성됩니다.

  1. 데이터를 artifacts 테이블에 로드합니다.
LOAD DATA LOCAL INPATH '/home/hadoop/ruin-data/ruin-dataset.txt' INTO TABLE artifacts;
  1. 다음 명령을 실행하여 테이블 구조를 확인합니다.
DESCRIBE artifacts;

이렇게 하면 열 이름과 데이터 유형이 표시됩니다.

데이터 그룹화 및 집계

이 단계에서는 GROUP BY 절을 사용하여 유물 데이터를 분석하고 숨겨진 패턴을 발견합니다.

  1. Hive 셸에서 다음 쿼리를 실행하여 각 유물 유형별 유물 수를 계산합니다.
SELECT artifact_type, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY artifact_type;

이 쿼리는 데이터를 artifact_type별로 그룹화하고 COUNT(*) 함수를 사용하여 각 유형의 유물 수를 계산합니다.

  1. 가장 일반적인 유물 유형을 찾으려면 ORDER BY 절을 추가하여 이전 쿼리를 수정합니다.
SELECT artifact_type, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY artifact_type
ORDER BY artifact_count DESC
LIMIT 1;

이 쿼리는 결과를 artifact_count별로 내림차순으로 정렬하고 출력을 첫 번째 행으로 제한하여 가장 높은 수를 가진 유물 유형을 제공합니다.

  1. 유물 유형에 따라 유물의 상태를 분석해 보겠습니다. 다음 쿼리를 실행합니다.
SELECT artifact_type, condition, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY artifact_type, condition
ORDER BY artifact_type, condition;

이 쿼리는 데이터를 artifact_typecondition별로 그룹화하고, 각 조합에 대한 유물 수를 계산하고, 결과를 artifact_typecondition별로 정렬합니다.

  1. 마지막으로, 다음 쿼리를 실행하여 다양한 위치에서 유물의 분포를 탐색할 수 있습니다.
SELECT location, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY location
ORDER BY artifact_count DESC;

이 쿼리는 데이터를 location별로 그룹화하고 각 위치에서 발견된 유물 수를 계산하며, artifact_count별로 내림차순으로 정렬합니다.

요약

이 랩에서는 Hadoop 의 Hive 와 GROUP BY 기능을 활용하여 고대 유적에서 발견된 유물 데이터 세트를 분석하는 방법을 탐구했습니다. 환경을 설정하고, 데이터를 Hive 에 로드하고, 다양한 GROUP BY 쿼리를 실행함으로써, 가장 일반적인 유물 유형, 유형별 유물의 상태, 그리고 다양한 위치에 걸친 유물의 분포와 같은 귀중한 통찰력을 발견했습니다.

이 실습을 통해, 대규모의 복잡한 데이터 세트를 다룰 때 특히 Hadoop 과 Hive 가 데이터 분석 및 패턴 발견에 어떻게 활용될 수 있는지에 대한 더 깊은 이해를 얻었습니다. 데이터를 그룹화하고 집계하는 능력은 빅 데이터 세계에서 기본적인 기술이며, 이 랩은 이 필수적인 개념에 대한 실질적인 소개를 제공했습니다.