1 背景:RDBMS中insert使用(insert+values)
在MySQL这样的RDBMS中,通常是insert+values的方式来向表插入数据,并且速度很快。这也是RDBMS中插入数据的核心方式。
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
假如说对Hive的定位不清,把Hive当成RDBMS来使用,也使用insert+values的方式插入数据,会如何呢?
--hive中insert+values
create table t_test_insert(id int,name string,age int);
insert into table t_test_insert values(1,"allen",18);
你会发现执行过程非常非常慢,底层是使用MapReduce把数据写入HDFS的。
试想一下,如何在Hive中这样玩,对于大数据分析,海量数据一条条插入是不是非常刺激。因此在Hive中我们通过将数据清洗成为结构化文件,再Load加载到表中。
但是并不意味着insert语法在Hive中没有使用地位了,通常在Hive中我们使用insert+select语句。即插入表的数据来自于后续select查询语句返回的结果。