spark 2.4.8, scala 2.11
에러 문구
org.apache.spark.sql.AnalysisException: Table or view not found: `dbName`.`tbName`; line 12 pos 9;
Intellij 에서 실행시킬 때 아주 잘 작동하였으나, 테스트 서버에 배포하여 spark-submit하니 위와 같이 해당 테이블을 찾지 못하는 문제가 발생하였다.
개인적으로 확인한 리스트
- MetaStore URL 설정여부
val sparkConf: SparkConf = new SparkConf()
.set("hive.metastore.uris", AppConfig.hiveMetastoreUrl)
- 위와 같이 `"hive.metastore.uris"` 에 metastore url을 잘 작성해주었나?
- 당연히 intellij에서 실행이 잘 되는건 잘 넣어줬기 때문이다.
enableHiveSupport()
설정 여부
SparkSession.builder().config(SparkConfig.sparkConf)
.enableHiveSupport()
.getOrCreate()
- 위와 같이
enableHiveSupport()
를 잘 넣어 주었나?- 당연히 intellij에서 실행이 잘 되는건 잘 넣어줬기 때문이다.
- HDFS 권한 문제?
hdfs dfs -ls /HiveTablePath
- 따로 설정하지 않았지만, 확인 결과 문제는 없었다.
- Hive-site.xml을 제대로 읽지 못 했다?
spark-submit \
--class Execute class path \
--master Mode \
--jars "Extra library Path/*.jar" \
--files Hive Site Path/hive-site.xml \
- 빙고 Spark submit이 hive-site.xml을 읽어오지 않아 발생한 문제였다
- metastore설정이 잘 되어 있는데 왜 잘 작동하지 못 하는지는 추후 확인 해 봐야겠다.
개인적인 팁
- 한가지 팁으로는
--jars "Extra library Path/*.jar"
( 잘못된잘못된 정보를 공유하는 것일 수 있으니, 틀린 정보면 알려주시면 감사하겠습니다.)- 위 *.jar은 Spark 1.6을 사용할 때 사용불가였지만, 2.4로 넘어오니 동작하였다. (spark 1.6 : "~~/lib1.jar,lib2.jar....")
- Extra library Path에 Prefix를 넣어 원격지의 jar파일을 가져와서 읽을 수 있다. (e.g: hdfs:///
//*.jar)- 필자 경험상 이렇게 안 하고 로컬의 library를 사용하면, 지속적으로 HDFS에 업로드
- 위와 같이 실행하는 hdfs에 올려놓으면 업로드 하지 않고, 해당 lib에 링크걸어서 사용하는 것으로 보였다.
필자는 4번으로 해결했다. 이것도 아니였으면 더 많은 것을 찾아봐서 더 많은 오류 해결 방법을 습득했을 것 이지만, 그래도 빠르게 해결되서 다행이다.
'프로그래밍 및 IT > 에러 및 잡버그' 카테고리의 다른 글
데이터 이전 후 spark application 구동 시 발생한 NullPointerException (0) | 2023.08.16 |
---|---|
java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;) (0) | 2023.07.27 |
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (0) | 2023.07.19 |
git submodule 에러 (0) | 2021.05.24 |
장고 ( VSCode ) - 도커 ( Oracle ) 연결 에러 (0) | 2021.05.21 |