엔지니어 블로그

[Error] Airflow SparkKubernetesOperator + postgresql Dependency 본문

에러와 마주했을때

[Error] Airflow SparkKubernetesOperator + postgresql Dependency

안기용 2025. 3. 10. 19:57

환경

Ubuntu 22.04

Airflow

Spark On Kubernetes

에러 내용

Airflow에서 SparkKubernetesOperator를 사용하고 있는데 Spark가 Postgresql  Driver를 찾지 못하는 에러다.

py4j.protocol.Py4JJavaError: An error occurred while calling o67.load.
: java.lang.ClassNotFoundException: org.postgresql.Driver

 

해결 과정

단순히 postgresql.jar 파일만 구해서 Spark Session 만들 때 설정해주면 될 것 같았다. 

.config("spark.driver.extraClassPath", "/opt/spark/data/postgresql-42.7.5.jar")

로컬에서 진행한 결과 성공이었다. 그래서 Airflow에 옮겨 넣고 다시 실행했으나 동일한 에러가 발생했다. 

어떻게든 해결하고자 spark driver Pod 내부에 진입해서 jar 파일이 모여있는 곳을 발견하고 /opt/spark/jars에 수동으로 jar 파일을 넣어준 후 pyspark를 실행해서 코드를 진행해보니 성공했다. 

들뜬 마음으로 Airflow에서 실행해봤으나 실패.. 뭐가 문젠지 알 수 없었다. 그래서 찾아 간 곳은 공식문서였다. 역시 공식문서를 제대로 봐야 한다. Spark Driver를 정의하는 yaml에 다음 내용을 넣고 실행했다.

spec:
  sparkConf:
    spark.jars.ivy: "/tmp/ivy"
    spark.jars.repositories: "https://mvnrepository.com/artifact/org.postgresql/postgresql"
    spark.jars.packages: "org.postgresql:postgresql:42.7.5"

성공이다. 잘 실행 되었다. 앞으로 에러가 발생하면 공식문서를 조금 더 꼼꼼히 찾아보데 힘을 쏟아야겠다.