我最近开始研究使用 Hive 和 Impala 查询位于 HDFS 上的大量 CSV 数据。正如我所期望的那样,对于我目前使用的查询,与 Hive 相比,Impala 获得了更好的响应时间。

我想知道是否有某些类型的查询/用例仍然需要 Hive 以及 Impala 不适合的地方。

对于 HDFS 上的相同数据,Impala 如何提供比 Hive 更快的查询响应?

最佳答案

您应该将 Impala 视为“SQL on HDFS”,而 Hive 更像是“SQL on Hadoop”。

换句话说,Impala 甚至根本不使用 Hadoop。它只是在所有节点上运行守护程序,缓存 HDFS 中的一些数据,以便这些守护程序可以快速返回数据,而无需执行整个 Map/Reduce 作业。

这样做的原因是运行 Map/Reduce 作业需要一定的开销,因此通过将 Map/Reduce 完全短路,您可以在运行时获得相当大的 yield 。

话虽如此,Impala 不会取代 Hive,它适用于非常不同的用例。与 Hive 相比,Impala 不提供容错功能,因此如果在您的查询过程中出现问题,那么它就会消失。绝对适用于 ETL 类型的工作,其中一项工作的失败代价高昂,我会推荐 Hive,但 Impala 对于小型临时查询非常有用,例如对于只想查看和分析一些数据的数据科学家或业务分析师没有建立强大的工作岗位。同样从我个人的经验来看,Impala 还不是很成熟,我看到有时当数据量大于可用内存时会出现一些崩溃。

关于hadoop - 与 hive 相比,impala 如何提供更快的查询响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16755599/

10-16 01:21