2014-09-29 1 views
0

하이브는 쿼리의 그룹화 문을 기반으로 다른 파일 (예 : 다른 .csv 파일)에 쿼리를 쓸 수 있습니까?하이브로 그룹화하여 테이블 작성

INSERT OVERWRITE LOCAL DIRECTORY '/user/drwho/foodf' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
SELECT 
    LNAME, 
    FNAME, 
    CAR_MAKE, 
    AVG(YEAR) AS AVERG 
FROM EXTRACT 
GROUP BY LNAME, FNAME, CAR_MAKE 

및 출력 SMITH_AUBREY_FORD.csv, SMITH_AUDREY_TOYOTA.csv 설정 가지고

LName FName Car_make Year 
----- ----- -------- ---- 
Smith Audrey Ford  2000 
Smith Audrey Ford  2013 
Smith Audrey Toyota  1996 
Miller Heath Ford  1995 
Miller Heath Dodge  1990 
Miller Heath Dodge  2010 

것은하여 그룹을 사용하여 데이터 세트를 작성 싶습니다 장난감 데이터 예

extract 세트 등등 로컬 디렉토리에 써주세요. 하이브에서 가능합니까? 그렇지 않다면, 돼지는 어떨까요?

편집 :

$ cat extract.txt 
Smith,Audrey,Ford,2000 
Smith,Audrey,Ford,2013 
Smith,Audrey,Toyota,1996 
Miller,Heath,Ford,1995 
Miller,Heath,Dodge,1990 
Miller,Heath,Dodge,2010 


$ awk -F "," '{ print > $1"_"$2"_$3".txt" }' extract.txt 
$ ls -1 
extract.txt 
Miller_Heath_Dodge.txt 
Miller_Heath_Ford.txt 
Smith_Audrey_Ford.txt 
Smith_Audrey_Toyota.txt 

답변

1

:이 하이브 수없는 동안, 우리는 로컬 디렉토리에서 쿼리를 작성하는 @KS Nidhin의 제안을 사용하는 대신 AWK를 사용할 수 있습니다 발견했습니다

group by를 기반으로 로컬 디렉토리에 직접 출력 할 수있는 방법은 없습니다. 나는

  1. 파일 이름 query1.hql
  2. 하이브 -f query1.hql> /SMITH_AUBREY_FORD.csv
  3. 작성 다른 선택 쿼리에 절에서 요구하는 그룹과 선택 쿼리를 작성

    다음과 같은 접근 방식을 제안 다른 파일 query2.hql에
  4. 하이브 -f query2.hql> /SMITH_AUDREY_TOYOTA.csv

등등.

따라서 로컬 디렉토리에 필요한 결과가 저장됩니다.

희망이 접근 방식이 도움이됩니다.