Impala-jdbc查询有时候很慢。

impala-jdbc 查询impala数据,发现有时候很慢,经调查发现是DESCRIBE Table耗时4m多。

img

使用的是springboot+mybatis访问Impala,jdbc驱动是com.cloudera.impala.jdbc41.Driver,
有知道是什么原因吗?

DESCRIBE TABLE命令是Impala用来获取表的元数据信息,例如列名、数据类型、注释等等。这个命令在第一次执行时会从Impala的元数据服务中获取相应的信息,然后将这些信息缓存起来,以供后续使用。

由于DESCRIBE TABLE需要从Impala的元数据服务中获取大量的信息,因此可能会比较耗时。但是在第一次执行DESCRIBE TABLE时,Impala会将获取到的信息缓存起来,以供后续使用。因此,如果您发现DESCRIBE TABLE命令的执行速度很慢,可能是由于缓存失效导致的。

为了解决这个问题,您可以尝试在Impala中手动刷新元数据缓存,具体操作如下:

打开Impala的shell终端,执行如下命令:

img


等待Impala刷新元数据缓存,这可能需要一些时间,具体时间取决于您的数据量和集群的负载情况。

重新执行您的查询,查看是否有改善。

另外,如果您的表结构不经常变化,也可以考虑使用Impala的CDH插件,将表结构信息缓存到本地,以减少DESCRIBE TABLE的执行时间。

最后,如果问题仍然存在,您可以考虑使用其他的工具或框架来访问Impala,例如Apache Kylin等。这些工具通常会提供更好的性能和更高效的查询方式。