ㅇ미국 항공 데이터 다운로드
데이터 설명 : 1987 ~ 2008년까지의 미국 내 모든 상업 항공편에 대한 항공편 도착,출발,세부사항에 대한 정보를 제공하는 데이터입니다. 이 모든 데이터를 다 내려받고 압축을 풀 경우 11GB입니다.
이 통계 데이터는 총 29개의 컬럼으로 구성되어 있습니다.
48 하둡 파일 시스템에 하이브에서 파티션 테이블 생성하기
일반 테이블 | 파티션 테이블 |
하나의 서랍장에 모든 데이터를 다 넣어놓은 테이블 | 그룹별로 구분 지어서 데이터를 넣어놓은 테이블 (엑셀 sheet 생각하면 될 듯?) |
파티션 테이블은 테이블을 전체 스캔하지 않고 특정 파티션만 스캔합니다.
일반 테이블 > select *
from 옷장
where 옷 = '파란 반팔 티셔츠';
파티션 테이블 > select *
from 여름 옷장
where 옷 = '파란 반팔 티셔츠';
예제1. 항공데이터 1997.csv를 리눅스 서버 /home/oracle 밑에 올리시오.
(모바텀을 통해서 올렸습니다.)
(base) [oracle@centos ~]$ ls -l 1997.csv
-rw-rw-r--. 1 oracle oracle 540347861 3월 28 16:14 1997.csv
예제2. /home/oracle 밑에 1997.csv의 첫번째 행을 지우고 1997b.csv로 저장하시오.
(base) [oracle@centos ~]$ head -5 1997.csv
Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,CRSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,Distance,TaxiIn,TaxiOut,Cancelled,CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,LateAircraftDelay
1997,1,28,2,1615,1615,1728,1725,WN,1159,N683,73,70,60,3,0,ABQ,PHX,328,4,9,0,NA,0,NA,NA,NA,NA,NA
1997,1,29,3,1624,1615,1735,1725,WN,1159,N626,71,70,56,10,9,ABQ,PHX,328,4,11,0,NA,0,NA,NA,NA,NA,NA
1997,1,30,4,1626,1615,1730,1725,WN,1159,N321,64,70,52,5,11,ABQ,PHX,328,2,10,0,NA,0,NA,NA,NA,NA,NA
1997,1,31,5,1628,1615,1729,1725,WN,1159,N383,61,70,50,4,13,ABQ,PHX,328,4,7,0,NA,0,NA,NA,NA,NA,NA
1997.csv 컬럼명이 살아있음. 이 컬럼들을 다 지우고 하둡에 올려야함
(base) [oracle@centos ~]$ sed '1d' 1997.csv >> 1997b.csv
(base) [oracle@centos ~]$ head -5 1997b.csv
1997,1,28,2,1615,1615,1728,1725,WN,1159,N683,73,70,60,3,0,ABQ,PHX,328,4,9,0,NA,0,NA,NA,NA,NA,NA
1997,1,29,3,1624,1615,1735,1725,WN,1159,N626,71,70,56,10,9,ABQ,PHX,328,4,11,0,NA,0,NA,NA,NA,NA,NA
1997,1,30,4,1626,1615,1730,1725,WN,1159,N321,64,70,52,5,11,ABQ,PHX,328,2,10,0,NA,0,NA,NA,NA,NA,NA
1997,1,31,5,1628,1615,1729,1725,WN,1159,N383,61,70,50,4,13,ABQ,PHX,328,4,7,0,NA,0,NA,NA,NA,NA,NA
1997,1,14,2,1503,1425,1619,1535,WN,1221,N513,76,70,64,44,38,ABQ,PHX,328,4,8,0,NA,0,NA,NA,NA,NA,NA
예제3. 리눅스 /home/oracle 밑에 있는 1997b.csv 파일을 하둡 분산파일 시스템 /user/oracle/1997b.csv로 올리시오.
(기존에 있던 1997.csv파일 삭제하고 1997b.csv로 새로 올림)
(base) [oracle@centos ~]$ hadoop fs -rm /user/oracle/1997.csv
Deleted hdfs://localhost:9000/user/oracle/1997.csv
(base) [oracle@centos ~]$ hadoop fs -put 1997b.csv /user/oracle/1997b.csv
예제4. 항공 데이터를 저장할 테이블을 하이브에서 생성하시오.
(스칼라로 접속되어 있다면 접속을 해제하고 테이블 생성해야합니다.)
hive> CREATE TABLE airline_delay(
> Year INT,
> Month INT,
> DayofMonth INT,
> DayOfWeek INT,
> DepTime INT,
> CRSDepTime INT,
> ArrTime INT,
> CRSArrTime INT,
> UniqueCarrier STRING,
> FlightNum INT,
> TailNum STRING,
> ActualElapsedTime INT,
> CRSElapsedTime INT,
> AirTime INT,
> ArrDelay INT,
> DepDelay INT,
> Origin STRING,
> Dest STRING,
> Distance INT,
> TaxiIn INT,
> TaxiOut INT,
> Cancelled INT,
> CancellationCode STRING COMMENT 'A = carrier, B = weather, C = NAS, D=security' ,
> Diverted INT COMMENT '1 = yes, 0 = no',
> CarrierDelay STRING,
> WeatherDelay STRING,
> NASDelay STRING,
> SecurityDelay STRING,
> LateAircraftDelay STRING
> )
> Partitioned by (DelayYear INT)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ','
> LINES TERMINATED BY '\n'
> STORED AS TEXTFILE;
OK
>comment 안 달아도 되지만, 주석처럼 써두면 다른 사람들이 테이블 보기에 좋음.
> Partitioned by (DelayYear INT) 로 인해 DelayYear 컬럼을 기준으로 파티션 테이블을 생성함(연도별로 파티션 테이블로 생성할 예정)
예제5. 하둡 분산 파일 시스템에 /user/oracle/1997b.csv를 하이브에 airline_delay 테이블에 로드하시오.
hive> load data inpath '/user/oracle/1997b.csv'
> overwrite into table airline_delay
> partition (delayYear='1997');
문제308. (오늘의 마지막 문제) 1994.csv도 미국 항공 통계 사이트에서 내려받고 첫번째 줄 지우고 하둡 파일시스템에 올린 후 airline_delay 테이블에 입력하시오.
(모바텀으로 데이터 올리기)
(base) [oracle@centos ~]$ ls -l 1994.csv
-rw-rw-r--. 1 oracle oracle 501558665 3월 28 17:00 1994.csv
(base) [oracle@centos ~]$ vi 1994.csv
(base) [oracle@centos ~]$ head -3 1994.csv
1994,1,7,5,858,900,954,1003,US,227,NA,56,63,NA,-9,-2,CLT,ORF,290,NA,NA,0,NA,0,NA,NA,NA,NA,NA
1994,1,8,6,859,900,952,1003,US,227,NA,53,63,NA,-11,-1,CLT,ORF,290,NA,NA,0,NA,0,NA,NA,NA,NA,NA
1994,1,10,1,935,900,1023,1003,US,227,NA,48,63,NA,20,35,CLT,ORF,290,NA,NA,0,NA,0,NA,NA,NA,NA,NA
(base) [oracle@centos ~]$ hadoop fs -put 1994.csv /user/oracle/1994.csv
hive> load data inpath '/user/oracle/1994.csv'
> overwrite into table airline_delay
> partition (delayYear='1994');
hive> select year, count(*)
> from airline_delay
> group by year;
1994 5180048
1997 5411843
'Study > class note' 카테고리의 다른 글
하둡 / 몽고디비 NoSQL 사용하기, csv파일 로드(리눅스os, 하둡) (0) | 2022.03.29 |
---|---|
하둡 / 하이브 파티션 테이블 2 (0) | 2022.03.29 |
하둡 / 스파크에서 스파크 SQL 사용하기 (0) | 2022.03.28 |
하둡 / 스파크 설명, 스파크 설치 (0) | 2022.03.28 |
하둡 / 영화평점에 대한 큰 데이터를 내려받아 hive 에서 분석하기 (0) | 2022.03.24 |