오지's blog

pyspark 으로 MYSQL접속하여 table select(ssl) - java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 에러 발생 본문

개발노트/Python

pyspark 으로 MYSQL접속하여 table select(ssl) - java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 에러 발생

오지구영ojjy90 2022. 4. 4. 12:29
728x90
반응형
import json
from common_libs.utils import project_path
import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder.master('local').appName("PySpark_MySQL_test").getOrCreate()
spark.conf.set("jars", "mysql-connector-java-8.0.28.jar")
with open(f"{project_path}/secret.json", "r") as fp:
    jcontents=json.loads(fp.read())


df = spark.read.format("jdbc").option("url", f"jdbc:mysql://{jcontents['host']}:{jcontents['port']}/{jcontents['database']}?zeroDateTimeBehavior=convertToNull") \
    .option("driver", "com.mysql.cj.jdbc.Driver").option("dbtable", "order") \
    .option("user", f"{jcontents['user']}").option("password", f"{jcontents['password']}")\
    .option("ssl", True).option("sslmode", "require").option("ssl-ca", "/home/ubuntu/BaltimoreCyberTrustRoot.crt.pem").load()

df.show(5)

spark를 이용하여 db의 테이블을 select하는 코드를 짜보았다. Azure기반의 MySQL이고 ssl모드가 on으로 되어 있는 dbms에서 spark를 이용하여 테이블의 5개 row만 가져오는 코드이다.

 

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 에러 발생

- 해당 path에 pyspark용 mysql라이브러리가 없어서 발생한 에러

spark의 jars폴더에 mysql커넥터 jar라이브러리를 넣는다. 

$ cp mysql-connector-java-8.0.28.jar $SPARK_HOME/jars

Comments