spark2.x 와 hive 2.x 버전의 메타스토어를 연결하면 오류가 발생합니다. 지라에는 스파크 2.2 버전에서는 해결이 됐다고 나오지만 저는 2.4.6 버전에서도 오류가 발생했습니다. 관련 지라는 다음과 같습니다.
https://issues.apache.org/jira/browse/SPARK-18112
에러 원인
에러의 내용은 다음과 같습니다. HIVE_STATS_JDBC_TIMEOUT 필드를 찾지 못한다고 나옵니다.
scala> spark.sql("show databases").show()
java.lang.NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT
at org.apache.spark.sql.hive.HiveUtils$.formatTimeVarsForHiveClient(HiveUtils.scala:204)
at org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:285)
hive-exec-1.2.1.jar 파일을 확인하면 해당 필드가 있지만, hive-exec-2.3.8.jar 에서는 해당 필드를 확인할 수 없었습니다.
해결 방법
이 문제를 해결하는 방법은 두 가지가 있습니다.
스파크를 신규로 빌드해서 해당 정보를 처리하지 않도록 수정하는 방법이 있고, 스파크2용으로 빌드된 hive 1.2.1 라이브러리를 추가하면 됩니다.
메이븐에서 해당 파일들을 찾아서, 스파크 라이브러리 위치에 다음 파일들을 추가합니다.
- hive-beeline-1.2.1.spark2.jar
- hive-cli-1.2.1.spark2.jar
- hive-exec-1.2.1.spark2.jar
- hive-jdbc-1.2.1.spark2.jar
- hive-metastore-1.2.1.spark2.jar
https://mvnrepository.com/artifact/org.spark-project.hive/hive-cli/1.2.1.spark2
반응형
'빅데이터 > spark' 카테고리의 다른 글
[spark] spark3와 hive3 메타스토어 연동 (0) | 2021.06.21 |
---|---|
[spark] spark2와 hive2 메타스토어 연동 (0) | 2021.06.21 |
[spark] spark에서 snappy 라이브러리를 찾지 못할때 수정 방법 : java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy (0) | 2021.03.18 |
[pyspark] pyspark 실행시 python: command not found 오류 (0) | 2021.03.18 |
[spark] __spark_libs__.zip does not exist 오류 해결 방법 (0) | 2020.09.14 |