나는 HDFS에 다음과 같은 폴더 구조가 있습니다HDFS 폴더에서 키 - 값 하이브 테이블에
- 다각형
- file1.kml
- file2.kml
- file3.kml 을
그리고 나는 하이브 테이블에 th 전자 다음 스키마 :
표 "다각형"
name|kml
file1|content of file1
file2|content of file2
file3|content of file3
이는 하이브에서 수행 할 수 있습니까?
나는 HDFS에 다음과 같은 폴더 구조가 있습니다HDFS 폴더에서 키 - 값 하이브 테이블에
그리고 나는 하이브 테이블에 th 전자 다음 스키마 :
표 "다각형"
name|kml
file1|content of file1
file2|content of file2
file3|content of file3
이는 하이브에서 수행 할 수 있습니까?
내 지식에 따라 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;
당신은 할 수 있습니다 파일 이름을
확인이 저장 INPUT__FILE__NAME, 하이브에서의 가상 열 사용 이 가상 열에 대한 자세한 내용은 link을 참조하십시오.
테이블에 데이터를로드 한 다음 선택 쿼리에서 INPUT__FILE__NAME을 사용하여 파일 이름을 가져올 수 있습니다. 예컨대
,
select INPUT__FILE__NAME,your_column from your_table;