【发布时间】:2021-05-11 19:41:01
【问题描述】:
我们有一个使用 impala jdbc 连接运行少量 SQL 的 spark 应用程序。应用程序在不同的时间完成,例如 15 分钟、1 小时和 3 小时(最长)。
我们可以在作业完成之前打开 JDBC 连接还是需要在短时间内关闭和打开?
【问题讨论】:
标签: sql apache-spark jdbc connection impala
我们有一个使用 impala jdbc 连接运行少量 SQL 的 spark 应用程序。应用程序在不同的时间完成,例如 15 分钟、1 小时和 3 小时(最长)。
我们可以在作业完成之前打开 JDBC 连接还是需要在短时间内关闭和打开?
【问题讨论】:
标签: sql apache-spark jdbc connection impala
自从我看到这个已经有一段时间了,我没有看到其他答案,所以我认为 IMPALA 正在随着云的进步而衰落。无论如何。
Afaik 你在当前查询的完整处理过程中保持连接打开,这很有意义。但 Spark 应用程序可能有多个 Impala 查询和处理,它们之间与 IMPALA 无关。
在 Spark (3) 中,你有这个 JDBC 参数:
queryTimeout 驱动程序等待的秒数 要执行到给定秒数的语句对象。零意味着 没有限制。在写路径中,这个选项取决于JDBC如何 驱动程序实现 API setQueryTimeout,例如,h2 JDBC 驱动程序 检查每个查询而不是整个 JDBC 批处理的超时。它 默认为 0。
但这不太相关。
在服务器端 - impalad,您有各种设置。见https://docs.cloudera.com/documentation/enterprise/latest/topics/impala_timeouts.html#impalad_timeout/
对于资源池,这些参数要么设置为 0,要么不设置。
当您通过 Spark 为 IMPALA 提供 jdbcURL 时,请确保您请求具有适当设置的池(请求池),这样您就不会超时。我不确定您是否可以通过 sessionInitStatement(用于查询级别)通过 Spark 执行此操作,很可能可以,但您可能有具有不同特征的不同查询。
所以,这更像是一个配置问题。
【讨论】: