impala-jdbc 查询impala数据,发现有时候很慢,经调查发现是DESCRIBE Table耗时4m多。
使用的是springboot+mybatis访问Impala,jdbc驱动是com.cloudera.impala.jdbc41.Driver,
有知道是什么原因吗?
DESCRIBE TABLE命令是Impala用来获取表的元数据信息,例如列名、数据类型、注释等等。这个命令在第一次执行时会从Impala的元数据服务中获取相应的信息,然后将这些信息缓存起来,以供后续使用。
由于DESCRIBE TABLE需要从Impala的元数据服务中获取大量的信息,因此可能会比较耗时。但是在第一次执行DESCRIBE TABLE时,Impala会将获取到的信息缓存起来,以供后续使用。因此,如果您发现DESCRIBE TABLE命令的执行速度很慢,可能是由于缓存失效导致的。
为了解决这个问题,您可以尝试在Impala中手动刷新元数据缓存,具体操作如下:
打开Impala的shell终端,执行如下命令:
重新执行您的查询,查看是否有改善。
另外,如果您的表结构不经常变化,也可以考虑使用Impala的CDH插件,将表结构信息缓存到本地,以减少DESCRIBE TABLE的执行时间。
最后,如果问题仍然存在,您可以考虑使用其他的工具或框架来访问Impala,例如Apache Kylin等。这些工具通常会提供更好的性能和更高效的查询方式。