發現JDBC沒有合適的驅動程序,我使用在星火
df.write.mode("append").jdbc("jdbc:mysql://ip:port/database", "table_name", properties)
插入到MySQL中的表。我的代碼中添加了Class.forName("com.mysql.jdbc.Driver")
。
當我提交我的星火申請:
spark-submit --class MY_MAIN_CLASS
--master yarn-client
--jars /path/to/mysql-connector-java-5.0.8-bin.jar
--driver-class-path /path/to/mysql-connector-java-5.0.8-bin.jar
MY_APPLICATION.jar
這種紗線客戶機模式對我的作品。
但是當我使用的紗線集羣模式:
spark-submit --class MY_MAIN_CLASS
--master yarn-cluster
--jars /path/to/mysql-connector-java-5.0.8-bin.jar
--driver-class-path /path/to/mysql-connector-java-5.0.8-bin.jar
MY_APPLICATION.jar
它好好嘗試的工作。我也嘗試設置「--conf」:
spark-submit --class MY_MAIN_CLASS
--master yarn-cluster
--jars /path/to/mysql-connector-java-5.0.8-bin.jar
--driver-class-path /path/to/mysql-connector-java-5.0.8-bin.jar
--conf spark.executor.extraClassPath=/path/to/mysql-connector-java-5.0.8-bin.jar
MY_APPLICATION.jar
但仍然得到「沒有找到適合jdbc的驅動程序」錯誤。
我將mysql-connector-java-5.1.38-bin.jar添加到我的jar中,現在我不包含它在我的spark-submit cli中。通過這樣做,紗線客戶仍然可以工作,但紗線集羣不能。 –
您還可以嘗試在「SPARK_HOME/conf/spark-default.conf」文件中配置這兩個變量「spark.driver.extraClassPath」和「spark.executor.extraClassPath」,並指定這些變量的值作爲jar文件。確保工作節點上存在相同的路徑。 – Sumit
設置「spark.driver.extraClassPath」適用於我,謝謝。 –