gpt4 book ai didi

hadoop - hive插入和加载数据的区别

转载 作者:可可西里 更新时间:2023-11-01 16:44:20 25 4
gpt4 key购买 nike

我是HadoopHive的新手,对hive的insert intoload data一头雾水声明。

当我执行 INSERT INTO TABLE_NAME (field1, field2) VALUES(value1, value2); 时,hiveserver 将执行 mapReduce 任务。

当我执行 LOAD DATA LOCAL INPATH PATH_TO_MY_DATA INTO TABLE TABLE_NAME; 时,它只从文件中加载数据,不执行任何其他操作。

我用Python写了一个程序,这里是我的问题,如果我用pyhs2,用insert语句保存数据记录,每条记录都会执行一个MapReduce任务,很慢。我应该先将我的数据保存在某个地方,然后使用 load data 语句加载它吗?

最佳答案

加载Hive 在将数据加载到表中时不进行任何转换。加载操作目前是纯复制/移动操作,将数据文件移动到与 Hive 表对应的位置。

插入

可以使用插入子句将查询结果插入到表中。

INSERT INTO TABLE tablename PARTITION (partcol1[=val1], partcol2[=val2] ...) select_statement FROM from_statement;

在加载文件中复制的所有数据到表中,在插入中你可以根据某些条件放置数据。

您的解决方案

对于您执行给定 hql 的每一行,因此每次 map reduce 运行。

如果你想在单个 mapreduce 中执行你的查询

INSERT INTO TABLE students
VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32);

创建一个查询并执行它。如果您有更多这种情况的记录,您可以将其作为一个批处理。

关于hadoop - hive插入和加载数据的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com