2014-10-14 2 views
0

나는 HDFS에 다음과 같은 폴더 구조가 있습니다HDFS 폴더에서 키 - 값 하이브 테이블에

  • 다각형
    • file1.kml
    • file2.kml
    • file3.kml

그리고 나는 하이브 테이블에 th 전자 다음 스키마 :

표 "다각형"

name|kml 
file1|content of file1 
file2|content of file2 
file3|content of file3 

이는 하이브에서 수행 할 수 있습니까?

답변

1

내 지식에 따라 Hive만을 사용할 수는 없습니다. 그러나 당신은 확실히 bash을 사용할 수 있습니다 (저는 그것이 리눅스 머신이라고 생각합니다). 먼저 예를 들어, 입력 파일을 만듭니다

#!/bin/bash 
# the dir path to be passed as parameter 
for file in $1/* 
    do echo "$(basename $file)|$(cat $file)" >> polygons.dat 
done 

스크립트에 실행 권한을 부여하면, 같은 실행 :

./script Polygons 

지금 당신이 polygons.dat 파일에 필요한 데이터를해야합니다. Windows 컴퓨터 인 경우 batch 스크립트를 사용하여 동일한 작업을 수행하는 방법을 찾아야합니다 (두렵지는 않습니다.)

그런 다음로드, 예를 들어 작업을 수행 할 기본 Hive 명령을 사용

hive> CREATE TABLE Polygons (name STRING, kml STRING) 
    > ROW FORMAT DELIMITED 
    > FIELDS TERMINATED BY '|' 
    > STORED AS TEXTFILE; 

hive> LOAD DATA LOCAL INPATH 'path/polygons.dat' OVERWRITE INTO TABLE Polygons; 
1

당신은 할 수 있습니다 파일 이름을

확인이 저장 INPUT__FILE__NAME, 하이브에서의 가상 열 사용 이 가상 열에 대한 자세한 내용은 link을 참조하십시오.

테이블에 데이터를로드 한 다음 선택 쿼리에서 INPUT__FILE__NAME을 사용하여 파일 이름을 가져올 수 있습니다. 예컨대

,

select INPUT__FILE__NAME,your_column from your_table;