Ven*_*kam 5 hadoop hive join mapreduce
试图加入6个表,每个表大约有500万行.尝试加入帐户号码,该帐号在所有表格中按升序排序.地图任务成功完成,减速机停止工作在66.68%.尝试增加减少数量的选项,并尝试其他选项设置hive.auto.convert.join = true; 并设置hive.hashtable.max.memory.usage = 0.9; 并设置hive.smalltable.filesize = 25000000L; 但结果是一样的.尝试少量记录(如5000行),查询工作得很好.
请建议可以在这里做些什么来使它工作.
Don*_*ner 11
减少66%的人开始做实际减少(0-33%是洗牌,33-66%是排序).在与hive的连接中,reducer在两个数据集之间执行笛卡尔积.
我猜想在所有数据集中至少有一个外键频繁出现.注意NULL和默认值.
例如,在连接中,假设键"abc"在六个表(10 ^ 6)的每一个中出现十次.这是一个密钥的百万输出记录.如果"abc"在一个表中出现1000次,在另一个表中出现1000次,在另一个表中出现1000次,那么在其他三个表中出现两次,则得到80亿条记录(1000 ^ 3*2 ^ 3).你可以看到这是如何失控的.我猜测至少有一个密钥会产生大量的输出记录.
这也是在Hive之外的RDBMS中避免的一般良好做法.在多对多关系之间进行多个内部联接可能会给您带来很多麻烦.
| 归档时间: |
|
| 查看次数: |
3240 次 |
| 最近记录: |