KEEP GOING

[Spark][Tibero] ClassNotFoundException: com.tmax.tibero.jdbc.tbdriver 에러 해결 본문

bigdata/spark

[Spark][Tibero] ClassNotFoundException: com.tmax.tibero.jdbc.tbdriver 에러 해결

jmHan 2023. 5. 8. 17:22
반응형

목차

     

    spark trubleshooting

     

    ClassNotFoundException 오류 원인

    SparkSession으로 spark 객체를 생성하고, spark.read.jdbc()로 tibero db에 연결하여 테이블을 spark df로 읽어오는 과정이었습니다. 이 과정에서 ClassNotFoundException: com.tmax.tibero.jdbc.tbdriver 라는 오류가 발생했습니다.

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder.appName('jdbc connect test')\
                                .getOrCreate()
                               
    df = spark.read.format("jdbc")\
             .option("driver", "com.tmax.tibero.jdbc.TbDriver")\
             .option("url", "jdbc:tibero:server_ip:server_port/sid")
             .option("dbtable", "db_name.table_name")\
             .option("user", "root")\
             .option("password", "*******")
             .load()

     

    * jdbc로 데이터베이스에 연결하는 방법은 Apache Spark docs에 자세히 나와 있습니다.  

    spark로 jdbc 연결하는 방법을 자세히 알고 싶다면 아래 문서를 참고하면 됩니다. (사용 중인 spark 버전 정보가 2.4 버전이어서 아래 공식 문서를 참고하였습니다.)

    https://spark.apache.org/docs/2.4.4/sql-data-sources-jdbc.html

     

    JDBC To Other Databases - Spark 2.4.4 Documentation

    You are using an outdated browser. Upgrade your browser today or install Google Chrome Frame to better experience this site. Overview Programming Guides API Docs Deploying More v2.4.4 -->

    spark.apache.org

      

    다음과 같은 오류가 발생하는 원인은 스파크 경로 내에서 jdbc 연결에 필요한 driver 파일이 발견되지 않기 때문입니다.

    spark ClassNotFoundException 에러
    spark ClassNotFoundException error

     

    해결 방법 

    먼저, db 연결에 필요한 jdbc 파일을 찾아야 합니다. 드라이버 파일은 티베로가 설치된 디렉터리 내에 있습니다.

    티베로를 설치하여 사용 중이라면 $TB_HOME/client/lib/jar 경로에 가서 드라이버 파일을 찾으면 됩니다.

    드라이버 파일은 해당 경로 내에 tibero6-jdbc.jar과 같은 형태로 존재합니다.

     

    이제 발견한 jdbc 파일을 spark가 찾을 수 있도록 $SPARK_HOME/jars 디렉터리에 해당 파일을 옮깁니다.

    Apache Spark Docs(3.0.0)

    제대로 옮겼다면 sparkUI의 Environment 환경의 Classpath Entries 목록에 해당 *.jar 파일이 존재하는 것을 확인할 수 있습니다.

     

     

    참고)

    https://sparkbyexamples.com/spark/spark-read-jdbc/

    https://spark.apache.org/docs/2.4.4/sql-data-sources-jdbc.html

     

    반응형
    Comments