Named Struct 컬렉션을 사용하여 데이터 분석
이 단계에서는 Hive 에서 named_struct 함수를 사용하여 복잡한 데이터 구조를 생성하고 원격 측정 데이터를 보다 효과적으로 분석하는 방법을 배우게 됩니다.
먼저, 추가 레이서 정보를 저장하기 위해 중첩된 구조를 가진 새 Hive 테이블을 생성해 보겠습니다.
CREATE TABLE racer_info (
id INT,
racer STRUCT<name:STRING, team:STRING, age:INT>,
performance STRUCT<speed:DOUBLE, altitude:DOUBLE, total_score:DOUBLE>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '#'
STORED AS TEXTFILE;
이제 racer_info 테이블에 샘플 데이터를 삽입해 보겠습니다.
INSERT INTO TABLE racer_info
VALUES
(1, named_struct('name', 'Benny', 'team', 'Cosmic Racers', 'age', 28), named_struct('speed', CAST(32.5 AS DOUBLE), 'altitude', CAST(12.7 AS DOUBLE), 'total_score', CAST(45.2 AS DOUBLE))),
(2, named_struct('name', 'Zara', 'team', 'Stellar Speeders', 'age', 32), named_struct('speed', CAST(28.9 AS DOUBLE), 'altitude', CAST(14.1 AS DOUBLE), 'total_score', CAST(43.0 AS DOUBLE))),
(3, named_struct('name', 'Alex', 'team', 'Galactic Gliders', 'age', 25), named_struct('speed', CAST(30.2 AS DOUBLE), 'altitude', CAST(11.5 AS DOUBLE), 'total_score', CAST(41.7 AS DOUBLE))),
(4, named_struct('name', 'Benny', 'team', 'Cosmic Racers', 'age', 28), named_struct('speed', CAST(35.7 AS DOUBLE), 'altitude', CAST(10.2 AS DOUBLE), 'total_score', CAST(45.9 AS DOUBLE))),
(5, named_struct('name', 'Zara', 'team', 'Stellar Speeders', 'age', 32), named_struct('speed', CAST(31.1 AS DOUBLE), 'altitude', CAST(12.8 AS DOUBLE), 'total_score', CAST(43.9 AS DOUBLE))),
(6, named_struct('name', 'Alex', 'team', 'Galactic Gliders', 'age', 25), named_struct('speed', CAST(29.8 AS DOUBLE), 'altitude', CAST(15.7 AS DOUBLE), 'total_score', CAST(45.5 AS DOUBLE)));
이제 named_struct 함수를 사용하여 데이터를 분석해 보겠습니다.
- 레이서 이름과 팀을 가져옵니다.
SELECT racer.name, racer.team FROM racer_info;
- 레이서 이름과 최대 속도를 가져옵니다.
SELECT racer.name, performance.speed AS max_speed FROM racer_info;
- 레이서 이름, 팀 및 평균 점수를 가져옵니다.
SELECT racer.name, racer.team, AVG(performance.total_score) AS average_score
FROM racer_info
GROUP BY racer.name, racer.team;
이 예제는 named_struct 함수를 사용하여 복잡한 데이터 구조를 생성하고 데이터를 분석하는 방법을 보여줍니다.