[HADOOP] 중첩 된 하위 디렉토리의 입력이있는 하이브 만들기 테이블
HADOOP중첩 된 하위 디렉토리의 입력이있는 하이브 만들기 테이블
나는 /data/logs/[foldername]/[filename].avro와 같은 파일 경로의 HDFS에 Avro 형식의 데이터를 가지고 있습니다. 이 모든 로그 파일, 즉 / data / logs / * / * 형식의 모든 파일에 대해 Hive 테이블을 만들고 싶습니다. (모두 동일한 Avro 스키마를 기반으로합니다.)
mapred.input.dir.recursive = true 플래그로 아래의 쿼리를 실행하고 있습니다.
CREATE EXTERNAL TABLE default.testtable
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs://.../data/*/*'
TBLPROPERTIES (
'avro.schema.url'='hdfs://.../schema.avsc')
LOCATION이 덜 중첩되도록 변경하지 않으면 (즉, 특정 폴더 이름이 포함 된 'hdfs : //.../data/ [foldername] /') 테이블이 비어있게됩니다. LOCATION의 중첩 경로가 적 으면 아무런 문제가 발생하지 않았습니다.
이러한 모든 [foldername] 폴더의 데이터를 원본으로 할 수 있기를 바랍니다. 재귀 적 입력 선택을 내 중첩 된 디렉토리에 추가로 적용하려면 어떻게합니까?
해결법
-
==============================
1.재귀 디렉토리를 활성화하려면이 하이브 설정을 사용하십시오.
재귀 디렉토리를 활성화하려면이 하이브 설정을 사용하십시오.
set hive.mapred.supports.subdirectories=TRUE; set mapred.input.dir.recursive=TRUE;
외부 테이블을 생성하고 루트 디렉토리를 위치로 지정하십시오 :
LOCATION 'hdfs://.../data'
테이블 위치 및 모든 하위 디렉토리에서 데이터를 쿼리 할 수 있습니다.
-
==============================
2.문제를 해결할 수있는 한 가지 방법은 폴더 이름을 외부 테이블에 파티션 열로 추가하는 것입니다. 그런 다음 데이터 디렉토리에서 작성하는 것처럼 테이블을 작성할 수 있습니다. 또는 이러한 중첩 된 파일을 단일 디렉토리에서 병합 할 수 있습니다.
문제를 해결할 수있는 한 가지 방법은 폴더 이름을 외부 테이블에 파티션 열로 추가하는 것입니다. 그런 다음 데이터 디렉토리에서 작성하는 것처럼 테이블을 작성할 수 있습니다. 또는 이러한 중첩 된 파일을 단일 디렉토리에서 병합 할 수 있습니다.
나는 당신이 하이브에게 1 개의 테이블로 간주되는 모든 폴더들의 입력을 요구할 수 없을 것이라고 생각합니다.
이 질문은 비슷한 문제를 해결하는 것 같습니다. 하이브에 외부 테이블을 생성 할 때 위치를 특정 파일의 디렉토리로 지정할 수 있습니까?
동일한 문맥에서 열린 jira 문제가 있습니다. https://issues.apache.org/jira/browse/HIVE-951
더 많이 브라우징 나는이 게시물을 보았습니다. SimlinkInputTextFormat을 대안으로 사용하는 것이 좋습니다. 나는 이것이 당신의 Avro 포맷으로 얼마나 잘 날지 모르겠다. https://hive.apache.org/javadocs/r0.10.0/api/org/apache/hadoop/hive/ql/io/SymlinkTextInputFormat.html
from https://stackoverflow.com/questions/24438148/hive-create-table-with-inputs-from-nested-sub-directories by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop MapReduce 작업에서 다중 이퀄라이저 체인화 (0) | 2019.07.19 |
---|---|
[HADOOP] R이 Rscript로 실행 중인지 어떻게 테스트합니까? (0) | 2019.07.19 |
[HADOOP] hadoop과 hbase의 최신 호환 버전 (0) | 2019.07.19 |
[HADOOP] 아파치 하이브 : 문자열을 타임 스탬프로 변환하는 방법? (0) | 2019.07.19 |
[HADOOP] 클러스터 모드의 Spark를 사용하여 로컬 시스템에 파일 쓰기 (0) | 2019.07.19 |