【问题标题】:Connecting to Presto database using AWS Glue. Unable to pass SSL Keystore or Certificate使用 AWS Glue 连接到 Presto 数据库。无法通过 SSL 密钥库或证书
【发布时间】:2020-12-18 21:58:33
【问题描述】:

我在使用 AWS 粘合作业连接到 Presto 时遇到问题。代码是用 Spark Scala 编写的。我正在尝试使用以下代码连接到 Presto。

val datanot_in_hz = sqlcontext.read.format("jdbc").option("url", jdbcConUrl).option("driver", "io.prestosql.jdbc.PrestoDriver").option("SSL","true").option("SSLKeyStorePath","s3://test/presto_client.keystore").option("query", datanot_in_hz_sql).option("user", dbUserName).option("password", dbPassword).load()

我收到以下错误

2020-12-18 20:36:52,376 错误 [主] 胶水.ProcessLauncher (Logging.scala:logError(70)):用户类中的异常: java.sql.SQLException:设置 SSL 时出错: s3:/test/presto_client.keystore (没有这样的文件或 目录) io.prestosql.jdbc.PrestoDriverUri.setupClient(PrestoDriverUri.java:235) io.prestosql.jdbc.PrestoDriver.connect(PrestoDriver.java:88) org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:63) org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:54) org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:56) org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.getSchema(JDBCRelation.scala:210) org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:35) org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167) sddsurwithDAXreporting$.main(sddsurwithDAXreportingPresto.scala:89) sddsurwithDAXreporting.main(sddsurwithDAXreportingPresto.scala) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.amazonaws.services.glue.SparkProcessLauncherPlugin$class.invoke(ProcessLauncher.scala:38) com.amazonaws.services.glue.ProcessLauncher$$anon$1.invoke(ProcessLauncher.scala:67) com.amazonaws.services.glue.ProcessLauncher.launch(ProcessLauncher.scala:108) com.amazonaws.services.glue.ProcessLauncher$.main(ProcessLauncher.scala:21) com.amazonaws.services.glue.ProcessLauncher.main(ProcessLauncher.scala)

我尝试通过 pem 证书,但仍然失败并出现同样的错误。我已经检查了所有的许可。我有一个从同一个文件夹访问的 jar 文件,我可以访问它。 当我使用 Eclipse 从我的机器上运行相同的代码时,它运行良好。有人可以帮忙吗?我对 scala 相当陌生,这是我第一次尝试使用 SSL 证书连接到数据库。

【问题讨论】:

  • 我认为 s3 路径不起作用。

标签: scala apache-spark ssl aws-glue aws-glue-spark


【解决方案1】:

AWS 支持建议在运行时将文件从 S3 复制到 tmp 文件夹,因为 Glue 无法正确读取路径

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2017-02-03
    相关资源
    最近更新 更多