如何在 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.x
、presto-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_TIME
到 sessionVariables
对我来说很有效:
jdbc:mysql://host:port/database?sessionVariables=MAX_EXECUTION_TIME=123456666
查询验证:
SELECT @@max_execution_time
预期输出:
+--------------------+
|@@max_execution_time|
+--------------------+
| 123456666 |
+--------------------+
【讨论】:
以上是关于如何在 Spark 中增加 Presto 的查询执行时间的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询引擎对峙:Spark VS Impala VS Hive VS Presto