我正在学习Hadoop /大数据技术.我想将数据大量摄取到hive中.我开始使用一个简单的CSV文件,当我尝试使用INSERT
命令按记录加载每个记录时,一个记录插入本身大约需要1分钟.当我将文件放入HDFS然后使用该LOAD
命令时,它是瞬间的,因为它只是将文件复制到hive的仓库中.我只是想知道当他们选择LOAD
代替时,必须要面对的是什么INSERT
.
Load - Hive在将数据加载到表中时不进行任何转换.加载操作当前是纯复制/移动操作,它将数据文件移动到与Hive表对应的位置.
Insert -Query结果可以通过使用insert子句插入到表中,然后运行map reduce job.因此执行需要一些时间.
如果你想优化/调整插入语句.下面是一些技巧:
1.将hive-site.xml中的执行引擎设置为Tez(如果已安装)
set hive.execution.engine=tez;
2.USE ORCFILE
CREATE TABLE A_ORC ( customerID int, name string, age int, address string ) STORED AS ORC tblproperties (“orc.compress" = “SNAPPY”); INSERT INTO TABLE A_ORC SELECT * FROM A;
3.在hive中并发作业可以节省整个作业的运行时间.要实现hive-default.xml,需要更改下面的config:
set hive.exec.parallel=true; set hive.exec.parallel.thread.number=;
有关详细信息,请访问http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/ 希望这会有所帮助.