소개
"Sunken Treasure Bay"의 심해를 탐험하는 해양 고고학자라고 상상해 보세요. 이 신비로운 만은 고대 문명의 비밀, 그들의 보물, 그리고 파도 아래 잃어버린 유물을 품고 있다고 전해집니다. 여러분의 목표는 이러한 보물을 발굴하고, 바다 표면 아래 숨겨진 역사적 퍼즐을 맞춰나가는 것입니다.
수중 탐험을 시작하면서, 발견한 다양한 유물과 유물을 분석하고, 그 특징과 패턴을 주의 깊게 연구해야 합니다. 여기서 Hadoop Window Functions 의 강력한 기능이 발휘되어 복잡한 데이터 분석을 수행하고 과거의 미스터리를 풀 수 있습니다.
데이터 설정
이 단계에서는 수중 탐험 중에 발견한 유물과 유물을 시뮬레이션하는 데이터 세트를 생성합니다. 이 데이터 세트는 Hadoop Window Functions 를 사용하여 분석하기 위한 기반이 될 것입니다.
먼저, 터미널에서 다음 명령을 실행하여 hadoop 사용자로 로그인했는지 확인합니다.
su - hadoop
그런 다음, /home/hadoop 디렉토리 안에 artifacts라는 새 디렉토리를 생성합니다.
mkdir /home/hadoop/artifacts
cd artifacts/
다음으로, artifacts 디렉토리 안에 artifacts.txt라는 새 파일을 다음 내용으로 생성합니다.
1,Gold,2500,15,A1
2,Silver,1800,20,B2
3,Bronze,3000,12,A1
4,Ceramic,1200,18,C3
5,Gold,2800,22,B2
6,Silver,2000,16,A1
7,Bronze,2500,25,C3
8,Ceramic,1500,14,A1
9,Gold,3200,21,B2
10,Silver,1700,19,C3
이 파일은 재료, 연대, 발견된 깊이, 위치 좌표와 같은 세부 정보가 포함된 유물 컬렉션을 나타냅니다.
Window Functions 를 사용한 데이터 탐색
이제 데이터 세트가 준비되었으므로 Hadoop Window Functions 를 사용하여 데이터를 탐색해 보겠습니다. 분산 저장소에 있는 대규모 데이터 세트를 쿼리하고 관리하는 데 도움이 되는 데이터 웨어하우스 소프트웨어인 Apache Hive 를 사용합니다.
먼저, 터미널에서 다음 명령을 실행하여 Hive 쉘을 시작합니다.
hive
다음으로, 데이터 세트를 저장할 artifacts라는 새 테이블을 생성합니다.
CREATE TABLE artifacts (
artifact_id INT,
material STRING,
age INT,
depth INT,
location STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
artifacts.txt 파일에서 artifacts 테이블로 데이터를 로드합니다.
LOAD DATA LOCAL INPATH '/home/hadoop/artifacts/artifacts.txt' INTO TABLE artifacts;
RANK() 및 DENSE_RANK() window functions 를 사용하여 age 열을 먼저 탐색해 보겠습니다. 이러한 함수는 유물의 상대적인 연대 순위를 식별하는 데 도움이 됩니다.
SELECT
artifact_id,
material,
age,
RANK() OVER (ORDER BY age DESC) AS rank_age,
DENSE_RANK() OVER (ORDER BY age DESC) AS dense_rank_age
FROM
artifacts;
이 쿼리는 RANK() 및 DENSE_RANK() 함수를 기반으로 유물 세부 정보와 연대 순위를 출력합니다.
다음으로, LAG() 및 LEAD() 함수를 사용하여 연속적인 유물의 연대를 비교해 보겠습니다.
SELECT
artifact_id,
material,
age,
LAG(age, 1) OVER (ORDER BY age DESC) AS prev_age,
LEAD(age, 1) OVER (ORDER BY age DESC) AS next_age
FROM
artifacts;
이 쿼리는 정렬된 시퀀스에서 이전 및 다음 유물의 연대와 함께 유물 세부 정보를 표시합니다.
Artifact 패턴 분석
이 단계에서는 window functions 를 사용하여 패턴을 분석하고 다양한 기준에 따라 중요한 유물을 식별합니다.
각 재료 유형별로 가장 오래된 유물과 가장 새로운 유물을 먼저 찾아보겠습니다.
CREATE TABLE result_1
AS
SELECT
material,
artifact_id,
age,
FIRST_VALUE(artifact_id) OVER (PARTITION BY material ORDER BY age DESC) AS oldest_artifact,
LAST_VALUE(artifact_id) OVER (PARTITION BY material ORDER BY age ASC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS newest_artifact
FROM
artifacts;
SELECT * FROM result_1;
이 쿼리는 FIRST_VALUE() 및 LAST_VALUE() 함수를 사용하여 각 재료 유형별로 가장 오래된 유물과 가장 새로운 유물을 각각 식별합니다.
다음으로, 해당 재료 유형의 평균 연령에 비해 현저히 오래되거나 젊은 유물을 찾아보겠습니다.
CREATE TABLE result_2
AS
SELECT
artifact_id,
material,
age,
AVG(age) OVER (PARTITION BY material) AS avg_age_by_material,
CASE
WHEN age > AVG(age) OVER (PARTITION BY material) + 200 THEN 'Significantly Older'
WHEN age < AVG(age) OVER (PARTITION BY material) - 200 THEN 'Significantly Younger'
ELSE 'Average'
END AS age_category
FROM
artifacts;
SELECT * FROM result_2;
이 쿼리는 AVG() window function 을 사용하여 각 재료 유형의 평균 연령을 계산한 다음, 재료의 평균 연령에 비해 현저히 오래되었는지, 현저히 젊은지, 또는 평균인지에 따라 각 유물을 분류합니다.
요약
이 랩에서는 해양 고고학 탐험을 배경으로 Hadoop Window Functions 의 강력함을 탐구했습니다. 유물 및 유물 데이터 세트를 시뮬레이션하여 RANK(), DENSE_RANK(), LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE(), 및 AVG()와 같은 다양한 window functions 를 활용하여 데이터 내의 패턴을 분석하고 발견하는 방법을 배웠습니다.
실습을 통해 연대 순위 식별, 연속적인 유물 연대 비교, 각 재료 유형별 가장 오래된 유물과 가장 새로운 유물 찾기, 재료의 평균 연령에 따른 유물 분류에 대한 통찰력을 얻었습니다. 이 랩은 Hadoop Window Functions 를 사용하여 "Sunken Treasure Bay"의 미스터리를 풀기 위한 실용적이고 매력적인 경험을 제공했습니다.
이 랩의 설계는 매력적인 시나리오와 실용적인 코딩 연습을 결합하여 학습자가 가상의 모험을 탐험하면서 Hadoop Window Functions 에 대한 더 깊은 이해를 개발할 수 있도록 하는 것을 목표로 했습니다. 학습자를 현실적인 맥락에 몰입시킴으로써, 이 랩은 더욱 매력적이고 기억에 남는 학습 경험을 조성했습니다.



