[英]ClassNotFoundException for Google JDBC Driver in google cloud dataproc
我正在嘗試從在Google Cloud Dataproc上運行的作業連接到Google Cloud sql。 我無權從外部網絡訪問cloud sql實例。 由於我的dataproc群集與cloud sql位於同一項目中,因此我希望它允許連接。
我遵循了用於連接到雲sql的文檔( https://cloud.google.com/appengine/docs/standard/java/cloud-sql/ )。 但是此文檔用於將GAE連接到SQL。 不過,我嘗試了這些步驟。 但似乎com.mysql.jdbc.GoogleDriver
在數據proc環境中不可用。 因此,我得到了此類的ClassNotFoundException
。
我在哪里可以得到這個包裹。 我將其包含在uber jar中,並嘗試在dataproc集群中運行。
后做一些 閱讀 ,這聽起來像GoogleDriver只是在AppEngine應用程式的情況下可用。 在AppEngine之外,使用模式略有不同。 從第一個鏈接:
String jdbcUrl = String.format(
"jdbc:mysql://google/%s?cloudSqlInstance=%s&"
+ "socketFactory=com.google.cloud.sql.mysql.SocketFactory",
databaseName,
instanceConnectionName);
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
要解決此問題,您需要將具有JDBC驅動程序的jar添加到Spark驅動程序的類路徑: https : //spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases
為此,您需要將此jar上傳到GCS,在--jars
參數中指定它的路徑(以便Dataproc將其分發到集群中的所有節點),並在提交Spark時使用--properties
參數將其添加到Spark Driver類路徑中。通過Dataproc工作:
$ gcloud dataproc jobs submit spark ... \
--jars=gs://<BUCKET>/<DIRECTORIES>/<JAR_NAME> \
--properties=spark.driver.extraClassPath=<JAR_NAME>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.