分享

关于hive2.1.0的动态分区,做insert的性能问题

linbowei 发表于 2016-9-5 16:58:50 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 19342
用sparksql,对hive的分区表进行insert overwrite的插数据的操作;
假设要把t2的数据insert到t1,t2是1千万的数据量;
t2的part_mark字段是t1的分区字段,如果park_mark字段的值全部为1;
如果执行 insert overwrite table t1(part_mark) select * from t2 的时间为10秒的话;
那么,当park_mark字段的值为1到10时,执行 insert overwrite table t1(part_mark) select * from t2 的时间为100秒以上。
请问出现这样的原因是什么?有什么解决的办法?


已有(7)人评论

跳转到指定楼层
howtodown 发表于 2016-9-5 18:03:41
如果都在一个分区,减少了寻址,网络传输等,
如果多个分区,可能来回跑,时间自然多了。
就像送信,同样是信,一个地址,一次传递完就完了
如果多个地址,同样数量的信,你可能花几倍,甚至几十倍的时间

回复

使用道具 举报

linbowei 发表于 2016-9-5 18:05:09
howtodown 发表于 2016-9-5 18:03
如果都在一个分区,减少了寻址,网络传输等,
如果多个分区,可能来回跑,时间自然多了。
就像送信,同样 ...

我明白是这个道理,有没有什么优化的方法呢?

回复

使用道具 举报

einhep 发表于 2016-9-5 18:09:19
linbowei 发表于 2016-9-5 18:05
我明白是这个道理,有没有什么优化的方法呢?

  先分组试试,然后在插入

推荐参考,更多楼主可以在找找资料
[疑问]Hive里面oder by、sort by、distribute by、cluster by的区别
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19633



回复

使用道具 举报

ggw0122 发表于 2016-9-5 22:18:35
不错,谢谢分享
回复

使用道具 举报

linbowei 发表于 2016-9-6 08:56:50
ggw0122 发表于 2016-9-5 22:18
不错,谢谢分享

接下来可能会分享更多spark和hive相关的东西

回复

使用道具 举报

xingoo 发表于 2016-9-7 22:54:20
不错,学习了~ 先分组再插入分区
回复

使用道具 举报

linbowei 发表于 2016-9-8 08:57:34
xingoo 发表于 2016-9-7 22:54
不错,学习了~ 先分组再插入分区

性能和一起插入,是差不多的

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条