hive的insert操作对应怎样的map-reduce任务

SoutheastMiddle 2017-01-25 11:27:15
hive的insert操作:插入的目标表记录大小会影响插入性能吗?
有部分任务在跑批,各种数据源汇总到一张目标表中,有多个脚本往同一张目标表里插数据,目标表是百万级的,如果清理目标表数据,脚本执行执行是原来的一半还要少,是因为目标表大大时候,hive操作需要消耗更多资源吗?oracle中的insert操作,如果目标表没建索引,百万级和万级的插入时间几乎没有差别
...全文
591 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoutheastMiddle 2017-02-07
  • 打赏
  • 举报
回复
我每个脚本一次写入的是一个分区,插入逻辑就是覆盖,如果已存在,就覆盖。支持重跑操作
引用 1 楼 winds_xp 的回复:
我理解是这样的: Hive的插入是针对数据文件的写入,其中包括数据的分区处理。 如果你的数据没有跟目标表产生关联,那么写入的时候由于已经有的数据在多个分区上,那么写入的时候应该判断属于哪个分区。 再分别写入,增加了判断和寻找写入路径的过程,也就增加了时间。 还有数据量很大,那么肯定会占用很多的节点,那么写入数据的时候可能会导致写入的比较分散,造成网络传输的负担。 这要具体看你的数据是什么情况,比如你的数据非常集中,一次写入一个或几个分区,那应该就不会有多大差别。 如果你的插入逻辑还有些与现有的数据有关联关系,比如判断是否存在等等,那么就肯定会有另外开销了。
winds_xp 2017-02-03
  • 打赏
  • 举报
回复
我理解是这样的: Hive的插入是针对数据文件的写入,其中包括数据的分区处理。 如果你的数据没有跟目标表产生关联,那么写入的时候由于已经有的数据在多个分区上,那么写入的时候应该判断属于哪个分区。 再分别写入,增加了判断和寻找写入路径的过程,也就增加了时间。 还有数据量很大,那么肯定会占用很多的节点,那么写入数据的时候可能会导致写入的比较分散,造成网络传输的负担。 这要具体看你的数据是什么情况,比如你的数据非常集中,一次写入一个或几个分区,那应该就不会有多大差别。 如果你的插入逻辑还有些与现有的数据有关联关系,比如判断是否存在等等,那么就肯定会有另外开销了。

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧