hadoop - 通过分区控制 Impala 中的数据局部性

标签 hadoop hdfs partitioning database-partitioning impala

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

是否可以告诉 Impala 分区中的所有数据都应该始终位于任何 HDFS 副本的单个节点上?

在 Impala-SQL 中,我不确定“PARTITIONED BY”子句是否提供此功能。据我了解,Impala 将其分区分块到 HDFS 上的单独文件中,但 HDFS 不保证相关文件的共同定位,默认情况下也不 block (而是试图实现相反的目标)。

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

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

提前感谢大家。

最佳答案

关于您提到的幻灯片(“Co-located block replicas”)- 它是关于在 Hadoop 2.1 中实现的 HDFS 功能 (HDFS-2576)。它提供了一个 Java API 来向 HDFS 提示 block 应该放置在哪里。

截至 2014 年,它还没有在 Impala 中使用,但它确实看起来像是为此奠定了一些基础 - 因为它会给 Impala 带来相当于在传统 MPP 数据库中指定分布键的性能。

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

相关文章:

mysql - 为什么在日期时间列上对 MySQL 表进行分区会产生依赖于时区的错误?

linux - 如何在spark上执行shell脚本

hadoop - 如何解决在Windows 10中的Eclipse中执行map-reduce java代码时遇到的问题?

Mysql分区索引

hadoop - 服务器安装 hdfs 客户端失败

java - 缩放基于 Java 的树

python - 霍尔分区算法的解释

hadoop - 名称节点不工作

hadoop - 文件是否需要位于 HDFS 中才能在分布式缓存中使用?

mysql - 需要查找购买的每种产品的销售地点数量吗?