2017-12-19 5 views
0

나는 rundate라는 파티션 된 컬럼이있는 외부 테이블을 가지고 있습니다. 나는 다음하이브 파티션 테이블의 데이터를 볼 수 없습니다.

spark.sql("ALTER TABLE table ADD IF NOT EXISTS PARTITION(rundate = '2017-12-19')") 

코드는 잘 작동하고 난 파티션을 볼 수 있습니다를 사용하여 파티션을 만들

DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table") 

을 사용하여 테이블에 데이터를로드 할 수 있습니다. 그러나 하이브 테이블에서 데이터를 볼 수 없습니다.

답변

0

올바른 폴더 구조로 파티션 데이터를 저장하지 않았으며 데이터가없는 파티션을 수동으로 추가했습니다.

두 가지 : 1. 먼저 외부 테이블이 생성 된 위치의 데이터에 저장하고 폴더 구조가 하이브가 예상하는 것과 동일한 지 확인하십시오. 예 : 외부 테이블 이름이 table이고 파티션 열이 rundate이고 파티션 값이 2017-12-19이고 외부 테이블이 s3://test/table을 가리키고 있다고 가정합니다. 그런 다음 아래와 같이 파티션 2017-12-19에 대한 데이터를 저장합니다

DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table/rundate=2017-12-19/") 

2.Once 저장 최신 추가 파티션 하이브의 메타 스토어를 업데이트하는 명령 아래에 성공한 것입니다.

synatx: msck repair table <tablename> 
msck repair table table 
+0

도움을 주셔서 감사합니다 – Srinivas

관련 문제