【问题标题】:Load PrestoDB tables from Apache Spark从 Apache Spark 加载 PrestoDB 表
【发布时间】:2018-03-06 00:35:24
【问题描述】:

我在将表/视图数据从 Presto 数据库加载到 Spark 时遇到问题。

 val prestoDriver = "com.teradata.presto.jdbc42.Driver"

val df = spark.read.format("jdbc").option("url", prestoURL).option("LogLevel",6).option("driver", prestoDriver)
                  .option("user", "xx").option("SSLTrustStorePath", "/xxx.jks")
                  .option("AuthenticationType","LDAP Authentication").option("password", "").option("SSL",1).option("SSLTrustStorePwd", "xxx")
                  .option("dbtable", "<select query with where clause>")
                  .load()

在 Presto 控制台中,我可以看到相应的查询,但是查询在 1 小时后超时并出现错误:

com.facebook.presto.spi.PrestoException: Query 20180227_080921_03220_n5vdh has not been accessed since 2018-02-27T08:57:11.162Z: currentTime 2018-02-27T09:02:11.645Z
    at com.facebook.presto.execution.SqlQueryManager.failAbandonedQueries(SqlQueryManager.java:584)
    at com.facebook.presto.execution.SqlQueryManager$1.run(SqlQueryManager.java:180)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我的任何 Spark 任务都在无限期地运行,没有任何进展。看起来 Spark 中使用的 Presto Teradata 驱动程序在查询完成后没有联系 Presto 来获取结果。

任何人都可以对此提供一些启示吗?

谢谢

【问题讨论】:

  • val df = ... 整个代码并且超时了吗?之后你不对df 执行任何操作吗?你应该(因为没有数据是用load 获取的,尽管它的名字)。
  • @jacek ,我在这个 df 上确实有 .count 和 .save 之类的操作。执行操作时,Spark 任务会不明确地运行。
  • 显示操作(例如count)以及准确描述发生的情况(在 Web UI 和日志中)。这将有助于更好地理解您的案例,并可能会找到答案。谢谢。

标签: apache-spark apache-spark-sql teradata presto


【解决方案1】:

我可以确认您的语法(完全)适用于我的 presto 实例 (v0.195)。也许我们唯一的区别是我没有使用 ldap presto 插件,而是创建了自己的密码插件。

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2014-05-10
    • 2020-10-30
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多