[HIVE]中的insert into操作为什么非常慢

例如如下语句

 insert into table1 partition(xxx=xxx) select * from table2

即使数据只有两三条,也要2分钟,这是为什么?

0

3个回答

你可以这样查看hive的执行计划:

     > explain insert into t2 select value from t;
OK
Plan optimized by CBO.

Stage-3
  Stats-Aggr Operator
    Stage-0
      Move Operator
        table:{"name:":"default.t2"}
        Stage-2
          Dependency Collection{}
            Stage-1
              Map 1
              File Output Operator [FS_2]
                table:{"name:":"default.t2"}
                Select Operator [SEL_1] (rows=3 width=1)
                  Output:["_col0"]
                  TableScan [TS_0] (rows=3 width=1)
                    default@t,t,Tbl:COMPLETE,Col:NONE,Output:["value"]

Hive的执行要转化成若干步map-reduce的过程,而且可能要在多个节点间通信,所以即便很少的数据可能也是费了半天劲才执行出来的。就是说hive是为了处理大数据的,对于小数据的处理并不是优势。

0

hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中,数据一旦导入就不可以修改

0
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hive 很慢解决办法
hive 很慢:运行一下一下语句:set mapred.child.java.opts=-Xmx1024m;set mapreduce.map.java.opts=-Xmx1310m;set yarn.app.mapreduce.am.command-opts=-Xmx2457m;set mapreduce.reduce.java.opts=-Xmx2620m;...
如何解决spark写hive慢的问题
在使用spark写hive过程中,发现最耗时的部分是将产生的结果写入hive,举个例子,对3g*1G表的join来讲,将结果使用以下方式直接写入hive表需要超过半小时的时间: dataframe.registerTempTable("result") sql(s"""INSERT OVERWRITE Table $outputTable PARTITION (dt ='$output
一次实践:spark查询hive速度缓慢原因分析并以此看到spark基础架构
前一段时间数据挖掘组的同学向我返回说自己的一段pyspark代码执行非常缓慢,而代码本身非常简单,就是查询hive 一个视图中的数据,而且通过limit 10限制了数据量。 不说别的,先贴我的代码吧:from pyspark.sql import HiveContext from pyspark.sql.functions import * import json hc = HiveContext
第十二天 - Hive基本操作 - Hive导入数据、统计数据 - HiveJDBC操作Hive
第十二天 - Hive基本操作 - Hive导入数据、统计数据 - HiveJDBC操作Hive 第十二天 - Hive基本操作 - Hive导入数据、统计数据 - HiveJDBC操作Hive 一、Hive基础知识补充 概念 Hive基本操作(二) 二、Hive SQL操作案例一:统计dataflow.log文件中的流量数据 未指定分隔符 指定分隔符 三、Hive S...
我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?
《饮食男女》开头说:“人生不能像做菜,把所有的料都准备好了才下锅。” 但做大数据挖掘不一样,MapReduce 不同于人生,一定要把准备工作做好了,才能顺利运行后面的步骤。如果你的 HiveQL 代码没毛病,却一运行就出现 Fail 提示,可以看看,是不是少了下面哪项准备工作? 指定队列 set mapred.job.queue.name=queue01; //自己指定一个队列 在 H...
大数据踩过的坑——Hive insert
我在对Hive表数据清洗后,使用了如下SQL将结果集插入到新表中:    insert into db_name.table_name_1 (        col_1,col2,col3    )    with temp_table_1 as (       select id,col_2       from db_name.table_name_2 where id = condatiti...
关于一个oracle下遇到的insert into ...select... 效率很慢的问题
先描述一下问题,前提条件是select语句本身执行并不慢,我一个select查询,单独执行的话大约7秒左右,可能算是有些复杂,然后前面加上insert into去执行的话,刚开始的时候还好,后面越来越慢,最后遥遥无期看不到头,问题比较困扰,网上搜到一个帖子,地址:http://www.itpub.net/thread-1599007-1-1.html,在第二页中有位用户提到在select中增加/...
用mapreduce程序将hive写数据到hbase慢的解决办法
项目中可能会有将hive的数据同步到hbase的需求,但是有时mapreduce程序写数据会非常慢,也有可能会出现数据倾斜问题。这时就要对mapreduce程序进行优化了。        首先确定调大reduce个数,比如从5个调大到10个,如果还不能有效的加快速度。就需要在mapreduce程序中将hive中大量的空过滤掉,这部分特别耗资源,也会引起数据倾斜。这部分空到hbase中也没用,过滤
插入大量数据速度慢的解决方法:批量插入
场景: 项目需要导入案件2200条。其中导入的excel每个行案件的信息上包含大约15个联系方式。那么总的联系方式一共用30000条左右 这里优化之前的速度是16-20分钟之间。太慢了。找了好久优化的方法。最后确定了使用mysql批量插入的方法去进行插入操作 慢的原因及解决思路: 这里慢的原因是针对本项目: 插入方式为程序遍历循环逐条插入。在mysql上检测插入一条的速度在0.0
hadoop问题总结:hive load写入数据很慢
1.hadoop fs -Ddfs.replication=1 -put file.txt /tmp/a.txt 这个速度很快. 因为一个副本是写本地硬盘的.硬盘排除了 2.网卡坏了 http://www.cnblogs.com/ggjucheng/archive/2012/04/17/2454590.html vmstat 1 检测内存,io,cpu set mapred...
大数据学习之路34-hive的DML语法,加载数据,load,insert,多重插入
DML: 1.加载数据到表中: load insert 插入单条数据:insert into table t_seq values('10','xx','beijing',28); 这条语句的本质是,会执行一个mapreduce,将这条数据生成一个文件。文件的格式是这个表所要求的格式。 我们在hive中也可以访问hdfs: dfs -ls /; 这时候我们会发现,这时候查询的执行...
使用Python构造hive insert语句
mysql可以使用nevicat导出insert语句用于数据构造,但是hive无法直接导出insert语句。我们可以先打印在hive命令行,然后使用脚本拼装成insert语句,进行数据构造。 手动copy到python脚本进行sql语句构造: def transformString(s): list_s = s.split('\t') print(len(list_s)) ...
Trafodion 解决delete慢的问题
Trafodion不推荐在单一语句中删除或更新超过10000*n行(n为节点数)。所以在有大的删除或更新时,可能的情况下,应该分成多条语句执行,每条不超过10000*n行。具体语法如下,delete [first 10000*n] from table_name ...如果要按照这种方式实现,可能需要结合for..loop循环删除数据。除此之外,Trafodion提供另外一种delete数据的方法,
hive执行表操作指令卡死问题的解决
问题描述 在对hive表执行alert的时候,发现卡住不动了,退出后重进尝试drop表,依然卡住不动。 找解决方案如下: 1.网上的方案: 先进入mysql,执行 show variables like 'char%' 查看character_set_database 的value是latin 然后把latin改成utf-8就好了,然后就解决了。 然...
基于hive0.13中的spark1.6.0 insert overwrite 不可用临时解决办法
将spark中hive-site.xml的hive.metastore.uris参数指向1.2.1版本的hive元数据服务,并重启spark server,该问题解决。
解决oracle创建表或插入数据执行速度很慢的问题
由于需要创建的表或创建的数据量很大,若使用SQL window执行语句会导致oracle执行的速度很慢可使用command window执行语句,将要执行的语句copy到页面之后就会一行一行的速度执行...
Hive调优总结
熟悉Hive的开发者都知道,Hive会将操作语句转换为MapReduce作业,对于开发者是透明的,我们并不需要理解其原理就可以专注手头的工作,但是在实际开发当中数据量巨大,我们需要采取一些优化措施来提高MR作业的效率。 1.执行计划 与关系型数据库一样,我们可以使用EXPLAIN命令来分析HQL语句的执行流程,这也是分析一条SQL语句的瓶颈与性能不可缺少的一个步骤。 对于Hive的有些HQL语...
hive执行insert语句时报错
错误提示如下: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask MapReduce Jobs Launched: Stage-Stage-1: HDFS Read: 0 HDFS Write: 0 FAIL resolution...
大数据时代--Hive数据操作之insert操作
前面文章中讲解了Hive的数据定义语言,接下来就是数据操作语言,数据定义语言主要包含了Hive表结构的一些操作:包含创建表、删除表、修改表的结构、增加列等等一系列操作。数据操作语言主要是对表中的数据的增删改查。 数据插入 通过查询语句进行插入,这里不像是MySql可以一条一条的进行插入操作,在Hive中我试了几次都没有成功,搜了下也都是通过select语句进行插入的。这里也算是
Hive总结(二)
一、hive表的创建方式1.【普通的创建】create table stu_info(num int,name string)row format delimited fields terminated by "\t";加载数据到本地:将本地的数据复制到表对应的位置load data local inpath '/opt/datas/stu_info' into table stu_info;加载...
hive 的tmp文件
在hive中使用insert overwrite操作时 , 数据会先被写入到数据文件夹的临时文件内 ,路径 /tmp/hive/.hive-starting_hive... .tmp 当任务正常结束时,这些临时文件会自动被清理 , 如果出现hive中断 , 或者异常退出 , 这些临时文件会一直保存在hdfs上 , 久而久之 , 越来越多 , 造成大量无用挤压的文件 , 必须手动清理 . ...
Hive 使用TEZ引擎导致连接Hive SHELL慢的问题
在使用HDP Hadoop版本时,Ambari界面允许选择Hive执行引擎是MapReduce还是TEZ,如下图所示 使用TEZ作为Hive执行引擎来替代MapReduce,可以在很多场景上实现更好的效率提高,然后使用TEZ作为默认引擎也会导致一些问题。最近就碰到这样的场景,客户使用TEZ作为执行引擎,在计算过程中确实比使用默认的MapReduce快很多,但遇到的一个问题是:每次总要花10~...
hive truncate 命令卡死问题
hive 执行create,drop,insert等语句没有问题执行truncate命令卡死
Java程序中insert 执行慢的原因,以及c3p0连接池的配置
今天遇到一个问题,程序中一个insert 操作特别慢, 一直从来没有遇到过,select 操作如果数据量大的话,是有可能出现这种情况的,但是单条insert插入操作出现这种情况,不知道从何查原因了,debug了确定了就是insert这个操作慢,一开始分析是不是mysql原因,在Navicat上insert操作,嗖嗖的,排除,然后想到是不是数据库这张表一直在操作,查看下还真不是,然后想到是不是数据库...
hive insert overwrite1.2.1 无法删除旧文件的问题
JIRA地址:https://issues.apache.org/jira/browse/HIVE-12505?jql=project%20%3D%20HIVE%20AND%20issuetype%20%3D%20Bug%20AND%20affectedVersion%20in%20%281.0.0%2C%201.0.1%2C%201.1.0%2C%201.1.1%2C%201.2.0%2C%20
Kettle使用【插入\更新】组件非常慢
1、建立相应的关键字索引 2、表与表关联的关键字段数据类型必须一致 突然发现不管是使用Mysql还是Hive经常出错关联后效率非常慢。 反思:以后在建模时一定需要严谨考虑这个事情,不然总会效率又变慢了。 特别是使用create table table_name as select * from table_name;
jdbc执行sql慢的问题
今天发现JDBC的一个怪问题。 同样的sql,在mysql客户端中执行只要0.6、7秒,但是在JDBC中执行却要十二三分钟!这差距也太大了!而且只是其中一张表如此,查看表结构,很正常,没有索引,连主键都没有,就只有字段,字段类型也没有BLOB、CLOB之类的大数据类型,和其他表相比,字段数量也差不错。那就奇怪了,虽说JDBC是要慢些,但是不至于差别几百倍吧。再对比sql,唯一不同的就是这个慢的s...
JAVA执行INSERT或UPDATE语句比较慢,如何加快执行速度
最近在用Oracle update 一个大表,发现 update的速度很慢,上网找了很多方法。修修攺改,最后发现1、Oracle sql 语句执行并行操作:update  /*+ parallel(x,4)*/ 表名 x set bl='CXXXX' where id='0913';commit;如果还不行ALERT SESSION ENABLE  PARALLEL DML; 临时更改对话为并行,...
一文搞定hive之insert into 和 insert overwrite与数据分区
版权声明:本文为博主原创文章,未经博主允许不得转载。 数据分区         数据库分区的主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间,主要包括两种分区形式:水平分区与垂直分区。水平分区是对表进行行分区。而垂直分区是对列进行分区,一般是通过对表的垂直划分来减少目标表的宽度,常用的是水平分区。         hive建立分区语法:        create
一次Spark执行慢问题的排查
最近一个从Hbase捞取数据进行统计值的Spark Job 计算经常报警,执行时间大大超过以前的平均执行时间。 于是打开一个application image.png 发现这个application 有4个job,如上图所示,但是执行时间有点长。 于是我点开正在执行的job 然后点开一个执行比较的stage 在页面点开event TimeLi...
记一次OGG的replicat 进程处理速度慢的问题
【背景】 通过OGG将mysql数据同步到oracle,一共四张表,共用一个replicat进程。某天突然发现replicat进程处理数据的速度变慢,延迟很长时间。 【解决办法】 首先检查是否因为目标端dirdat目录下文件增多,发现文件确实比以往多一些,然后想着能否多开几个replicat进程来并行处理。于是,针对每张表创建一个replicat进程,结果发现数据变化少的两张表很快处理完,另...
问题解决:Hive中双count(distinct)过慢的问题
这里说的双count(distinct)是指类似下面的语句 select day,count(distinct session_id),count(distinct user_id) from log a group by day; 如果要执行这样的语句,前提必须设置参数:set hive.groupby.skewindata=true; 我们可以用“空间换时间”的思路解
kettle批量插入hive2,解决表输出速度慢问题
解决kettle使用表输出到hive2时,批量提交不起作用导致速度非常慢的问题,重新编译big-data-plugin插件使表输出支持对hive2批量提交,速度由几十条每秒提升到三千条每秒。
HIVE的常用操作-建库和表-插入数据
hive的安装(远程模式)    点击打开链接https://blog.csdn.net/qq_41028958/article/details/80820530使用hive-----------------------启动hadoop启动hive创建数据库:create database myhive;查看数据库:hive (default)> show databases; OK dat...
hive jdbc 插入中文数据乱码 解决
在插入的数据中对中文数据进行解码和转码 string= new String(string.getBytes("unicode"),"iso-8859-1"); 再插入数据就不再乱码了
hive表简单使用select * from tableName 也会跑很久MR问题(已解决)
今天hive表查数据的时候,只是简单的使用select * from tableName 也会跑很久MR,今测试发现解决办法: # 修改 hive-site.xml文件 ,加入属性,保存退出。 <property> <name>hive.fetch.task.conversion</name> <value>more</...
phpmyadmin反应慢的真实原因
最近装phpmyadmin,发现使用起来反应慢到让人发指! 遍寻资料,有说改version_check.php文件,无效! 再寻,有说要改libraries/Util.class.php,验证同样无效! 没有任何资料! 偶然发现本机的HOSTS文件的内容是这样的: 127.0.0.1 localhost ::1 localhost fe80::1%lo0 localhost 这不是意味
impala 最大的坑(说impala慢,是因为你不知道怎么使用它)
接到任务,impala查询慢。坑比较多。。。。。。 可能大家看到许多博客写优化的比较多,但我这个坑,好像没有人遇到。 优化,我也能列出一些 比如: 1.分区不能超过1w多 2.要执行compute stats xxx 表 3.join时,把小表写前面,会把小表广播到其他节点。 4.选择parquert 格式存储。 5.xxx   6.xxxxx          貌似以
Hive表的增删改、混合操作
增 Hive表增加数据有两种方式(目前我知道的),分别为load及传统意义上的insert。 通过load加载数据 命令格式 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] ...
Hive 使用insert into语句报没有执行权限的解决方法
在hiveshell中创建表后,执行insertinto语句报如下错误: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x at org.apache.ha...