빅데이터/하둡 2

하둡 2.0 튜토리얼 - (9) 하이브 QL

Johnny Yoon 2019. 7. 24. 19:12
728x90
반응형

 

 

 

 

 

하이브 QL

하이브는 하둡에 있는 파일(데이터)들을 SQL을 사용해 조회하고 분석할 수 있게 해줍니다.

지난 포스팅에서 설치한 하이브로 기본적인 데이터 조회를 해보도록 하겠습니다.

 

데이터베이스 만들기

먼저 데이터베이스를 만들어보겠습니다.

hive명령어로 실행한 뒤 다음 MySQL을 입력해 항공 데이터베이스를 생성합니다.

(테이블에 대한 Comment는 제외했습니다.)

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;

 

데이터베이스를 만들었으면 확인을 해보겠습니다.

hive> describe airline_delay;

다음과 같은 결과가 나오면 성공한것입니다.

OK
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              	A=carrier, B=weather, C=NAS, D=security
diverted            	int                 	1=yes, 0=no         
carrierdelay        	string              	                    
weatherdelay        	string              	                    
nasdelay            	string              	                    
securitydelay       	string              	                    
lateaircraftdelay   	string              	                    
delayyear           	int                 	                    
	 	 
# Partition Information	 	 
# col_name            	data_type           	comment             
	 	 
delayyear           	int                 	                    
Time taken: 0.167 seconds, Fetched: 35 row(s)

 

데이터 주입

이제 하둡 1.0에서 사용했던 항공데이터를 주입하도록 하겠습니다.

항공 데이터 관련 자료는 다음 링크의 포스팅에 나와있습니다.

https://jyoondev.tistory.com/48

 

doop01 기기의 로컬에 ~/input 폴더 안에 데이터가 있다고 가정하고 hive에서 다음 스크립트를 실행합니다.

hive> LOAD DATA LOCAL INPATH '/home/doop/input/2008.csv'
    OVERWRITE INTO TABLE airline_delay
    PARTITION (delayYear='2008');

 

위의 스크립트를 실행하면 hive가 파일을 주입하기 시작합니다.

 

데이터 조회

데이터가 모두 들어가면 다음 select문으로 데이터를 조회해봅니다.

hive> select year, month, deptime, arrtime, uniquecarrier, flightnum
    from airline_delay
    where delayYear ='2008'
    limit 10;

 

성공하면 다음과 같은 집계 결과가 나옵니다.

OK
2008	1	2003	2211	WN	335
2008	1	754	1002	WN	3231
2008	1	628	804	WN	448
2008	1	926	1054	WN	1746
2008	1	1829	1959	WN	3920
2008	1	1940	2121	WN	378
2008	1	1937	2037	WN	509
2008	1	1039	1132	WN	535
2008	1	617	652	WN	11
2008	1	1620	1639	WN	810
Time taken: 1.416 seconds, Fetched: 10 row(s)

 

하이브QL은 기존 SQL언어들과 조금 차이점이 있고, 그것은 대부분 hdfs가 파일을 수정할 수 없기때문에 생기는 부분입니다.

728x90
반응형