[HADOOP] 날짜 / 시간 범위에 대한 쿼리 하이브 분할 테이블
HADOOP날짜 / 시간 범위에 대한 쿼리 하이브 분할 테이블
내 하이브 테이블은 년, 월, 일, 시간으로 분할됩니다.
이제 2014-05-27에서 2014-06-05까지 데이터를 가져오고 싶습니다. 어떻게 할 수 있습니까 ??
나는 하나의 옵션이 에포크 (또는 yyyy-mm-dd-hh)와 질의 전달 에포크 시간에 파티션을 생성하는 것을 안다. 날짜 계층 구조를 잃어 버리지 않고 할 수 있습니까 ??
테이블 구조
CREATE TABLE IF NOT EXISTS table1 (col1 int, col2 int)
PARTITIONED BY (year int, month int, day int, hour int)
STORED AS TEXTFILE;
해결법
-
==============================
1.이것은 우리가 하이브에있는 테이블을 쿼리하는 동안 매일 직면하는 유사한 시나리오입니다. 귀하의 설명과 비슷한 방식으로 테이블을 분할했으며, 쿼리하는 경우 많은 도움이되었습니다. 이것이 우리가 파티션하는 방법입니다.
이것은 우리가 하이브에있는 테이블을 쿼리하는 동안 매일 직면하는 유사한 시나리오입니다. 귀하의 설명과 비슷한 방식으로 테이블을 분할했으며, 쿼리하는 경우 많은 도움이되었습니다. 이것이 우리가 파티션하는 방법입니다.
CREATE TABLE IF NOT EXISTS table1 (col1 int, col2 int) PARTITIONED BY (year bigint, month bigint, day bigint, hour int) STORED AS TEXTFILE;
파티션의 경우 다음과 같은 값을 할당합니다.
year = 2014, month = 201409, day = 20140924, hour = 01
이렇게하면 쿼리가 정말 간단 해지며 직접 쿼리 할 수 있습니다.
select * from table1 where day >= 20140527 and day < 20140605
희망이 도움이
-
==============================
2.이렇게 쿼리 할 수 있습니다.
이렇게 쿼리 할 수 있습니다.
WHERE st_date > '2014-05-27-00' and end_date < '2014-06-05-24'
그 결과가 사소한 경우에도 '2014-04-04'는 항상 '2014-04-03'보다 커질 수 있기 때문에 원하는 결과를 제공해야합니다.
내 샘플 테이블에서 실행하고 완벽하게 잘 작동합니다.
from https://stackoverflow.com/questions/24445696/query-hive-partitioned-table-over-date-time-range by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 코끼리 - 조류 mvn 패키지 오류 (0) | 2019.08.06 |
---|---|
[HADOOP] 2n + 1 쿼럼은 무엇을 의미합니까? (0) | 2019.08.06 |
[HADOOP] 잘못된 값 클래스 : org.apache.hadoop.io.Text 클래스가 org.apache.hadoop.io.IntWritable 클래스가 아닙니다. (0) | 2019.08.06 |
[HADOOP] java.lang.IllegalArgumentException : 잘못된 FS :, 예상 됨 : hdfs : // localhost : 9000 (0) | 2019.08.06 |
[HADOOP] 어떻게 하이브에 복잡한 데이터 형식 "구조"에 데이터를 삽입합니까 (0) | 2019.08.05 |