Data Engineering/Hadoop

[Hive] ALTER TABLE PARTITION SET LOCATION 이 안되는 현상

__spunky__ 2020. 3. 2. 17:19

Hive는 메타스토어상 테이블의 location을 바꾼다고 해서 테이블에 속한 partition의 location까지 바뀌진 않는다. 그래서 location을 수동으로 바꿔주거나 cascade 옵션을 줘서 변경해야한다.

 

partition의 location을 바꾸려면 아래와 같은 명령어를 사용해야한다.

ALTER TABLE [db_name].[table_name] PARTITION ([partition]=[value]) SET LOCATION [new_location]

그런데 이런 에러가 뜨면서 실패했다.

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter partition. alter is not possible

찾아보니 Cloudera 커뮤니티에 같은 증상에 대한 간단한 솔루션이 있어서 따라했더니 된다.

db_name을 USE db_name; 으로 먼저 선언한 후에 ALTER TABLE [table_name] 을 하면 된다.

 

https://community.cloudera.com/t5/Community-Articles/Solution-ALTER-TABLE-PARTITION-SET-LOCATION-does-not-work/ta-p/246537

 

Solution: ALTER TABLE PARTITION SET LOCATION does not work from script execution using hive –f or from beeline.

Steps to replicate: hdfs dfs -ls /apps/hive/warehouse/testraj.db/testtable/filename=test.csv.gz Found 1 items -rw-rw-rw- 1 hive hive 38258 2017-06-27 21:04 /apps/hive/warehouse/testraj.db/testtable/filename=test.csv.gz/000000_0 USING hive -f script cat /tm

community.cloudera.com