我正在尝试从谷歌云数据流上运行的作业连接到谷歌云sql。我没有授权从外部网络访问云sql实例。由于我的dataproc集群与cloud sql在同一个项目中,我希望它允许连接。
我已按照文档连接到云sql(https://cloud.google.com/appengine/docs/standard/java/cloud-sql/)。但是这个文档是用于从GAE连接到云sql。不过我尝试了这些步骤。但似乎com.mysql.jdbc.GoogleDriver
在数据处理环境中不可用。因此我得到ClassNotFoundException
这个班。
我在哪里可以获得此套餐。我将它包含在uber jar中并尝试在dataproc集群中运行。
答案 0 :(得分:0)
执行some reading后,听起来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);
答案 1 :(得分:0)
要解决此问题,您需要将带有JDBC驱动程序的jar添加到Spark Driver类路径:https://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases
为此,您需要将此jar上传到GCS,在--jars
参数中指定它的路径(因此Dataproc会将其分发到群集中的所有节点)并使用{{将它添加到Spark Driver类路径通过Dataproc提交Spark作业时的参数:
--properties