Scala Spark 애플리케이션에서 JDBC를 사용하려고하는데 sbt로 컴파일하고 있습니다. 그러나 줄을 추가하면 Class.forName("com.mysql.jdbc.Driver")
ClassNotFoundException이 발생합니다.
내 sbt 파일은 다음과 같습니다.
name := "SparkApp"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.1.0"
libraryDependencies += "com.databricks" %% "spark-csv" % "1.5.0"
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.1.0"
libraryDependencies += "mysql" % "mysql-connector-java" % "6.0.5"
마지막 줄이 JDBC 드라이버를 추가하는 데 필요한 전부라고 말할 수 있지만 작동하지 않는 것 같습니다. 나는 또한 시도 Class.forName("com.mysql.jdbc.Driver").newInstance()
했지만 동일한 결과가 있으므로 jdbc 클래스가 전혀 올바르게 추가되지 않는 문제라고 가정합니다.
JDBC를 사용하여 데이터 프레임을로드하기 위해 클래스 이름을 제공 할 필요가 없습니다. 다음 스파크 SQL 문서하기 만 제공해야 "jdbc"
올바른 옵션을 데이터 소스 형식으로 (실제로 종속성으로 커넥터를 추가) 및 설정 :
val host: String = ???
val port: Int = ???
val database: String = ???
val table: String = ???
val user: String = ???
val password: String = ???
val options = Map(
"url" -> s"jdbc:mysql://$host:$port/$database?zeroDateTimeBehavior=convertToNull",
"dbtable" -> table,
"user" -> user,
"password" -> password)
val df = spark.read.format("jdbc").options(options).load()
애플리케이션을 Spark에 제출할 때 MySQL 커넥터를 최종 jar 파일에 포함하거나 spark-submit
패키지를 종속성으로 가져 오도록 지시해야합니다.
spark-submit --packages mysql:mysql-connector-java:6.0.5 ...
이 플래그는 spark-shell
또는 에서도 작동합니다 pyspark
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다