簡體   English   中英

Google Cloud Dataproc中的Google JDBC驅動程序的ClassNotFoundException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM