如何在 Spark 中增加 Presto 的查询执行时间

Posted

技术标签:

【中文标题】如何在 Spark 中增加 Presto 的查询执行时间【英文标题】:How to increase query execution time of Presto in Spark 【发布时间】:2020-11-15 17:44:40 【问题描述】:

我目前正在使用 Spark 连接到 Presto。我们的查询在60m 之后超时,为了增加查询执行时间,我在getDBProperties() 中设置了query.max-execution-time 参数,如下所示

private def constructPrestoDataFrame(sparkSession : SparkSession, jobConfig : Config, query : String) : DataFrame = 
    sparkSession
      .read
      .jdbc(getPrestoConnectionUrl(jobConfig), query, getDBProperties(jobConfig))
  

  private def getDBProperties(jobConfig : Config) : Properties = 
    val dbProperties = new Properties
    dbProperties.put("user", jobConfig.getString("presto.user"))
    dbProperties.put("password", jobConfig.getString("presto.password"))
    dbProperties.put("Driver", jobConfig.getString("presto.driver.name"))
    dbProperties.put("query.max-execution-time", "2d")

    dbProperties
  

  private def getPrestoConnectionUrl(jobConfig : Config) : String = 
    s"jdbc:presto://$jobConfig.getString("presto.host"):8443/$jobConfig.getString("presto.catalogue.name")?SSL=true&SSLTrustStorePath=$jobConfig.getString("sslTrustStorePath")"+
      "&SSLTrustStorePassword="+URLEncoder.encode(jobConfig.getString("sslTrustStorePassword"))
  

当我运行作业时,我收到异常说 exception caught: Cause = null Message = Unrecognized connection property 'query.max-execution-time'

我们使用apache-spark-2.3.xpresto-jdbc-driver-300

【问题讨论】:

这不是 Presto 会话属性的一部分吗?或者至少您是否尝试过将其作为会话属性?在这种情况下,密钥将是 query_max_execution_time 是的,我试过query_max_execution_time。我遇到了同样的异常。 @UninformedUser 如果我的理解是正确的,我们添加session properties的方式与我们添加其他数据库属性的方式相同(添加到dbProperties对象) 据我了解,根据文档,它只需要 JDBS 参数,因为它仅适用于 JDBC 驱动程序:prestosql.io/docs/current/installation/jdbc.html - 所以我认为你想要设置的是 Presto 设置本身的一部分,您的 Presto 实例周围应该有一个属性文件。 我同意@UninformedUser 的观点,但就我而言,我无权更改 presto 实例级别的任何配置设置。如果我可以在我的连接/会话范围内设置配置,我们很好 【参考方案1】:

在 URL 中添加 MAX_EXECUTION_TIMEsessionVariables 对我来说很有效:

jdbc:mysql://host:port/database?sessionVariables=MAX_EXECUTION_TIME=123456666

查询验证:

SELECT @@max_execution_time

预期输出:

+--------------------+ 
|@@max_execution_time| 
+--------------------+ 
| 123456666          | 
+--------------------+

【讨论】:

以上是关于如何在 Spark 中增加 Presto 的查询执行时间的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL 与 Presto SQL 对比

Spark SQL 与 Presto SQL 对比

SQL查询引擎对峙:Spark VS Impala VS Hive VS Presto

Presto on Spark:通过 Spark 来扩展 Presto

presto0.176概述

Presto 无法查询配置单元表