소개
황량한 사막 황무지의 중심부에서, 외로운 인물이 오랫동안 버려진 도시의 잔해 속을 거닐고 있습니다. 이곳은 폐허 속에서 아름다움을, 잊혀진 것에서 잠재력을 발견하는 비전가인 Ruin Artist 의 영역입니다. 그들의 목표는 폐허 속에 숨겨진 이야기를 발굴하고, 예술을 통해 무너져가는 구조물에 새로운 생명을 불어넣는 것입니다.
Ruin Artist 는 한때 웅장했던 도서관의 여러 조각에 흩어져 있는 고대 데이터의 보고를 발견했습니다. 이 풍부한 정보를 이해하고 혼돈에 질서를 부여하기 위해, 그들은 Hadoop 의 강력한 데이터 처리 능력, 특히 Hive 의 group by 기능을 활용해야 합니다.
환경 설정
이 단계에서는 환경을 설정하고 분석을 위한 데이터를 준비합니다.
- 터미널을 열고 다음 명령을 실행하여
hadoop사용자로 전환합니다.
su - hadoop
/home/hadoop디렉토리로 이동합니다.
cd /home/hadoop
- 데이터 세트를 저장할
ruin-data라는 새 디렉토리를 생성합니다.
mkdir ruin-data
- 샘플 데이터 세트를
ruin-data디렉토리로 이동합니다.
cp /tmp/ruin-dataset.txt ruin-data/
이 데이터 세트에는 유물 유형, 위치 및 상태를 포함하여 폐허에서 발견된 다양한 유물에 대한 정보가 포함되어 있습니다.
데이터셋 탐색
이 단계에서는 데이터 세트를 Hive 에 로드하고 구조를 탐색합니다.
- 다음 명령을 실행하여 Hive 셸을 시작합니다.
hive
ruin_analysis라는 새 데이터베이스를 생성합니다.
CREATE DATABASE ruin_analysis;
ruin_analysis데이터베이스를 사용합니다.
USE ruin_analysis;
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 파일에서 데이터를 읽도록 구성됩니다.
- 데이터를
artifacts테이블에 로드합니다.
LOAD DATA LOCAL INPATH '/home/hadoop/ruin-data/ruin-dataset.txt' INTO TABLE artifacts;
- 다음 명령을 실행하여 테이블 구조를 확인합니다.
DESCRIBE artifacts;
이렇게 하면 열 이름과 데이터 유형이 표시됩니다.
데이터 그룹화 및 집계
이 단계에서는 GROUP BY 절을 사용하여 유물 데이터를 분석하고 숨겨진 패턴을 발견합니다.
- Hive 셸에서 다음 쿼리를 실행하여 각 유물 유형별 유물 수를 계산합니다.
SELECT artifact_type, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY artifact_type;
이 쿼리는 데이터를 artifact_type별로 그룹화하고 COUNT(*) 함수를 사용하여 각 유형의 유물 수를 계산합니다.
- 가장 일반적인 유물 유형을 찾으려면
ORDER BY절을 추가하여 이전 쿼리를 수정합니다.
SELECT artifact_type, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY artifact_type
ORDER BY artifact_count DESC
LIMIT 1;
이 쿼리는 결과를 artifact_count별로 내림차순으로 정렬하고 출력을 첫 번째 행으로 제한하여 가장 높은 수를 가진 유물 유형을 제공합니다.
- 유물 유형에 따라 유물의 상태를 분석해 보겠습니다. 다음 쿼리를 실행합니다.
SELECT artifact_type, condition, COUNT(*) AS artifact_count
FROM artifacts
GROUP BY artifact_type, condition
ORDER BY artifact_type, condition;
이 쿼리는 데이터를 artifact_type 및 condition별로 그룹화하고, 각 조합에 대한 유물 수를 계산하고, 결과를 artifact_type 및 condition별로 정렬합니다.
- 마지막으로, 다음 쿼리를 실행하여 다양한 위치에서 유물의 분포를 탐색할 수 있습니다.
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 가 데이터 분석 및 패턴 발견에 어떻게 활용될 수 있는지에 대한 더 깊은 이해를 얻었습니다. 데이터를 그룹화하고 집계하는 능력은 빅 데이터 세계에서 기본적인 기술이며, 이 랩은 이 필수적인 개념에 대한 실질적인 소개를 제공했습니다.



