본문 바로가기
빅데이터/hive

[hive] 하이브 3.1.3 버전에서 java.lang.ClassCastException: org.apache.hadoop.hive.metastore.api.StringColumnStatsData cannot be cast to org.apache.hadoop.hive.metastore.columnstats.cache.StringColumnStatsDataInspector 오류

by hs_seo 2022. 8. 19.

Hive 3.1.3 테이블에 데이터를 쓰고, 칼럼 stat 을 계산할 때 다음과 같은 오류가 발생하였습니다.

 

2022-08-16T16:25:52,536 ERROR [pool-9-thread-44] metastore.RetryingHMSHandler: java.lang.ClassCastException: org.apache.hadoop.hive.metastore.api.StringColumnStatsData cannot be cast to org.apache.hadoop.hive.metastore.columnstats.cache.StringColumnStatsDataInspector
	at org.apache.hadoop.hive.metastore.columnstats.merge.StringColumnStatsMerger.merge(StringColumnStatsMerger.java:30)
	at org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.mergeColStats(MetaStoreUtils.java:1066)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.set_aggr_stats_for(HiveMetaStore.java:7376)
	at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)
	at com.sun.proxy.$Proxy33.set_aggr_stats_for(Unknown Source)
	at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$set_aggr_stats_for.getResult(ThriftHiveMetastore.java:17017)
	at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$set_aggr_stats_for.getResult(ThriftHiveMetastore.java:17001)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
	at org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:111)
	at org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:107)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878)
	at org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:119)
	at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

 

 

이 오류는 HIVE-19316 버그입니다.

https://issues.apache.org/jira/browse/HIVE-19316

 

[HIVE-19316] StatsTask fails due to ClassCastException - ASF JIRA

 

issues.apache.org

 

따라서 패치를 하지 않으면 문제를 해결할 수 없습니다. hive-exec.jar 와 hive-standalone-metastore.jar 파일에서 문제가 발생합니다.

 

$ grep -l "org.apache.hadoop.hive.metastore.api.StringColumnStatsData" *
hive-exec-3.1.3.jar
hive-standalone-metastore-3.1.3.jar

 

일시적으로 stat 설정을 hive.stats.column.autogather=false 로 주어서 회피할 수 있지만 일시적인 방법이기 때문에 HIVE를 빌드하여 문제해결 하거나, 문제가 해결된 버전을 사용하여야 합니다.

 

현재 시점(2022.08)에 3.2.0이 아직 릴리스 되지않았기 때문에 저는 Hive를 빌드하여 문제를 해결하였습니다.

 

 

반응형