我们有一个spark应用程序,它使用impalajdbc连接运行很少的sql。应用程序在不同的时间完成,如15分钟,1小时和3小时最大。我们可以在作业完成之前打开jdbc连接,还是需要在短时间内关闭并打开连接?
abithluo1#
我已经有一段时间没有看到其他的答案了,所以我推测 Impala 正在随着云的发展而衰落。不管怎样。如果您在当前查询的整个处理过程中保持连接打开,那就非常有意义了。但是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时,请确保使用适当的设置请求一个池(请求池),这样您就不会得到超时。我不确定您是否可以通过spark-via-sessioninitstatement(对于查询级别)实现这一点,很可能您可以,但是您可能有不同的查询,具有不同的特征。所以,这更像是一个配置问题。
1条答案
按热度按时间abithluo1#
我已经有一段时间没有看到其他的答案了,所以我推测 Impala 正在随着云的发展而衰落。不管怎样。
如果您在当前查询的整个处理过程中保持连接打开,那就非常有意义了。但是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时,请确保使用适当的设置请求一个池(请求池),这样您就不会得到超时。我不确定您是否可以通过spark-via-sessioninitstatement(对于查询级别)实现这一点,很可能您可以,但是您可能有不同的查询,具有不同的特征。
所以,这更像是一个配置问题。