java - start - 아파치 hive
외부 테이블 하이브 만들기, 위치에 여러 파일이 들어 있습니다. (2)
CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/user/hive/warehouse/LOGS/test';
'test'폴더 아래에 매일 파일을 쓰고 있습니다. 예 :
/user/hive/warehouse/LOGS/test/20170420
/user/hive/warehouse/LOGS/test/20170421
/user/hive/warehouse/LOGS/test/20170422
내가 만든 LOGS 테이블 안의 어떤 데이터도 볼 수 없다.
하지만, 나는
LOCATION '/user/hive/warehouse/LOGS/test/20170422';
그 날 기록을 볼 수 있습니다.
내 HIVE 테이블에 / test 디렉토리 아래의 모든 데이터를보고 싶고 / test 디렉토리에도 매일 새 파일이 채워집니다.
기본적으로 하이브는 외부 테이블의 지정된 위치에있는 파일 (디렉토리가 아님) 만 읽습니다. 디렉토리를 추가하려면 다음 매개 변수를 설정하십시오.
set mapred.input.dir.recursive = true;
옵션 1
하위 디렉토리를 지원하려면
set mapred.input.dir.recursive=true;
하이브 버전이 2.0.0 보다 낮 으면
set hive.mapred.supports.subdirectories=false;
옵션 2
분할 된 테이블 만들기
CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING)
partitioned by (dt date)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/user/hive/warehouse/LOGS/test';
alter table LOGS add if not exists partition (dt=date '2017-04-20') LOCATION '/user/hive/warehouse/LOGS/test/20170420';
alter table LOGS add if not exists partition (dt=date '2017-04-21') LOCATION '/user/hive/warehouse/LOGS/test/20170421';
alter table LOGS add if not exists partition (dt=date '2017-04-22') LOCATION '/user/hive/warehouse/LOGS/test/20170422';
20170420
대신 dt=2017-04-20
과 같이 표준 규칙을 사용하여 디렉토리를 관리하는 경우 관리가 더 쉬울 것입니다 20170420