[HADOOP] 하이브 추가 파티션 문은 선행 0을 무시합니다.
HADOOP하이브 추가 파티션 문은 선행 0을 무시합니다.
hdfs에 폴더가 있습니다 / user / test / year = 2016 / month = 04 / dt = 25 / 000000_0
이 파티션 경로를 테스트 테이블에 추가해야합니다.
명령 :
ALTER TABLE test ADD IF NOT EXISTS PARTITION (year=2016,month=04,dt=25)
그러나이 파티션 추가 명령은 월 파티션의 선행 0을 무시하고 2016 년에 month = 4로 추가 폴더를 만듭니다. / user / test / year = 2016 / month = 04 / / user / test / year = 2016 / month = 4 / 및 표는 데이터가 포함되지 않은 / user / test / year = 2016 / month = 4 /이 경로를 가리 킵니다.
나는 로그를 확인했다. WARN org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer-Partition Spec month = 04가 month = 4로 변경되었습니다.
누군가 이런 종류의 문제에 직면 한 경우이를 피하는 방법을 알려주십시오.
하이브 버전 : 1.2.1000
해결법
-
==============================
1.파티션에 정수 유형을 사용하고 있습니다. 문자열 파티션과 따옴표를 사용하는 것보다 선행 0이 필요한 경우 ALTER TABLE test ADD IF EXISTS PARTITION (연도 '2016', 월 = '04', dt = '25 ')
파티션에 정수 유형을 사용하고 있습니다. 문자열 파티션과 따옴표를 사용하는 것보다 선행 0이 필요한 경우 ALTER TABLE test ADD IF EXISTS PARTITION (연도 '2016', 월 = '04', dt = '25 ')
-
==============================
2.파티션 폴더가 이미 생성 된 경우 MSCK REPAIR TABLE 테스트를 사용할 수 있습니다. 모든 디렉토리를 스캔하고 새 파티션을 작성합니다. 자세한 내용은 Hive Language Manual을 방문하십시오. 또는 INT 대신 파티션 열에 STRING을 사용해야합니다.
파티션 폴더가 이미 생성 된 경우 MSCK REPAIR TABLE 테스트를 사용할 수 있습니다. 모든 디렉토리를 스캔하고 새 파티션을 작성합니다. 자세한 내용은 Hive Language Manual을 방문하십시오. 또는 INT 대신 파티션 열에 STRING을 사용해야합니다.
from https://stackoverflow.com/questions/38017321/hive-add-partition-statement-ignores-leading-zero by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브 : CSV 파일에 포함 된 JSON 열을 분해하는 방법은 무엇입니까? (0) | 2019.09.14 |
---|---|
[HADOOP] Pyspark 응용 프로그램은 부분적으로 dataproc 클러스터 리소스를 이용합니다 (0) | 2019.09.14 |
[HADOOP] 하이브에서 외부 테이블에 파티션 만들기 (0) | 2019.09.14 |
[HADOOP] 동일한 테이블의 다른 배열 열과 관련하여 Hive 정렬 배열 열 (0) | 2019.09.14 |
[HADOOP] Hadoop / Eclipse- "main"스레드 예외 java.lang.NoClassDefFoundError : org / apache / hadoop / fs / FileSystem (0) | 2019.09.14 |