Impala 通过 JDBC 流式传输真的很慢
Posted
技术标签:
【中文标题】Impala 通过 JDBC 流式传输真的很慢【英文标题】:Impala streaming over JDBC is really slow 【发布时间】:2017-05-16 01:44:19 【问题描述】:我使用 impala-shell 运行了几个大型查询,发现性能令人满意。这些查询通常将 100k-1m 行写入磁盘。但是,当我使用 JDBC 以编程方式运行相同的查询时,将结果写入磁盘需要更长的时间。例如,从 impala-shell 需要 5 分钟的查询在 JDBC 上最多需要 30 分钟。
我已经尝试过 Hive 和 Cloudera JDBC 驱动程序,但性能同样很差。我尝试了各种获取大小,但没有任何区别。 Impala 通过 JDBC 进行流式传输从根本上来说很慢,还是我可以做其他事情来加速流式传输?
这是在 CDH 5.9.1 上。
【问题讨论】:
“流媒体”是什么意思?你能举一个你正在运行的查询的例子吗? 基本上,如果您正在运行INSERT SELECT
查询,则数据不会由您的客户端应用程序传输,因此“获取大小”无效。而按顺序运行 1000 个小查询意味着创建至少 1000 个 HDFS 文件(复制 x3),这与运行一个大查询不同。
【参考方案1】:
结果证明这是一个客户端问题。我正在使用 curl 来测试一个进行 Impala 查询的 Web 应用程序。从 curl 切换到使用 Scala 代码编写的客户端消除了延迟。
【讨论】:
以上是关于Impala 通过 JDBC 流式传输真的很慢的主要内容,如果未能解决你的问题,请参考以下文章
Postgres使用JDBC Kafka Connect进行流式传输