当我将数据(t1)存储在hadoop(可能使用spark)时,在一个键上分区哈希。据我所知,相同的密钥将始终保存在同一个集群节点上,例如,所有带有key = k1的t1行将保存在node-1上。
如果我将相同的散列分区程序应用于另一个数据表(t2),那么key = k1会再次保存在node-1上吗? hdfs实际上将key = k1的行存储在另一个datanode上的可能性有多大,以平衡群集?
如果t1.k1和t2.k1的行存储在同一节点上,我们可以在尝试连接键上的t1和t2时获得绝对数据局部性。但是,如果这些存储在不同的节点上,则较小的依赖性会导致网络传输和一些延迟。