当你连接分布在同一个密钥上的表并在连接条件中使用这些键列时,netezza中的每个SPU(机器)100%独立于另一个(参见nz-interview)。
在hive中,有bucketed map join,但是表示表到datanode的文件的分配是HDFS的责任,它不是根据hive CLUSTERED BY键完成的!
所以假设我有2个表,CLUSTERED由相同的密钥,并且我通过该密钥加入 - 可以从HDFS获得保证匹配存储桶将位于同一节点上吗?或者它总是必须将小表的匹配桶移动到包含大表桶的datanode?
谢谢,ido
(注意:这是对我上一个问题的更好的措辞:How does hive/hadoop assures that each mapper works on data that is local for it?)
答案 0 :(得分:0)
我认为不可能告诉HDFS存储数据块的位置。
我可以考虑以下技巧,它将用于小型集群 - 将其中一个表的复制因子增加到接近或等于集群中节点数的数量。
因此 - 在连接过程中,所需节点上几乎总是(或始终)存在适当的数据。