我有两个按日期列划分的大表。它们在hdfs中保存为Parquet文件。每个分区被64MB的块分割,并在集群机器上复制3次。为了优化连接操作,我希望在相同的机器上放置相同的日期分区(任何连接键值都只放置在一个日期分区中)。
spark中有一个partitioner对象,它可以帮助在集群中分布不同rdd的块。这和我的问题很相似,但我担心在保存这些rdd之后,hdfs机制可能会洗牌这些rdd的文件块。解释:rdd是spark示例,df方法saveastable(…)调用(我想)一些选择数据节点并复制数据的低级函数。
有谁能帮我知道我的表块的分布方式是否正确吗?
1条答案
按热度按时间qcuzuvrc1#
您的问题的答案是,在逻辑相关文件/表的分区方面,无法控制“相似/相似”数据块的放置。i、 e.您不能影响hdfs放置数据块的数据节点。
这些分区/数据块可能巧合地驻留在相同的数据节点/工作者(由于hdfs的复制)。
另外,对于s3,这种方法在任何情况下都不起作用,因为数据局部性优化的概念不存在。