在表创建时已知理想数据位置或布局的情况下,我想避免Impala节点不必要地通过网络从其他节点请求数据。这对于“非累加”操作很有用,因为无论如何(例如,百分位数),分区中的所有记录都需要在同一位置(节点)使用。

是否可以告诉Impala,对于任何HDFS副本,分区中的所有数据应始终位于同一节点上?

在Impala-SQL中,我不确定“PARTITIONED BY”子句是否提供此功能。以我的理解,Impala将其分区分块为HDFS上的单独文件,但是HDFS不能保证相关文件的共置位置,也不能默认默认阻止(而是试图做到相反)。

找到了有关Impala对HDFS开发的影响的一些信息,但不清楚这些信息是否已实现或仍在计划中:

http://www.slideshare.net/deview/aaron-myers-hdfs-impala
(幻灯片23-24)

预先谢谢大家。

最佳答案

关于您提到的幻灯片(“共置的块副本”)-它涉及在Hadoop 2.1中实现的HDFS功能(HDFS-2576)。它提供了一个Java API,可向HDFS提示应将块放置在何处。

自2014年起,它就没有在Impala中使用,但绝对可以为它建立一些基础-因为它将使Impala的性能等同于在传统MPP数据库中指定分发密钥。

关于hadoop - 通过分区控制Impala中的数据局部性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21797968/

10-10 10:56