hive中的增删改如何实现
来源:互联网 发布:搜一次cms官网 编辑:程序博客网 时间:2024/04/29 23:01
Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。由于 Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO ... VALUES 添加数据,使用 UPDATE ... SET 修改数据。但是随着云计算和hadoop的发展越来越多的传统系统需要云化,这其中必然涉及到数据的增删改查,如何根据hive的特点实现相应的功能是不能回避的,以下就是本人在hive改造oracle存储过程中的解决办法。
Update语法:
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1)]
Select [column]...,[update data]... FROM from_statement
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val2)]
Select [column]... FROM [tablename1 left outer join (select [column] ... From from_statement) ON equality_expression ( AND equality_expression )* where [right table column is NULL] [WHERE where_condition]]
INSERT OVERWRITE TABLE tablename2 [PARTITION (partcol1=val)]
Select * from tablename1 where partition_name=’va1’ or partition_name=val2;
eg:A表数据如下id(String) name(String)
----------------------------
1 aaa
2 bbb
3 ccc
-----------------------------
要求更新2 bbb为2 ddd
hive脚本如下(TMP_A为分区表):
insert overwrite table TMP_A partition (p='one') select id,"ddd" from A where id = 2;
insert overwrite table TMP_A partition (p='two') select a.id,a.name from A a left outer join (select id from TMP_A where name='one') b on (a.id=b.id) where b.id is NULL:
insert overwrite table A select * from TMP_A where p='one' or p='two';
Delete语法:
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement
[WHERE where_condition]
[join table]
eg:A表数据如下
id(String) name(String)
----------------------------
1 aaa
2 bbb
3 ccc
-----------------------------
要求删除2 bbb
hive脚本如下:
insert overwrite table A select id,name from A where id !=2;
ADD语法
通过分区增加。
如果目标表不是分区表则需要借助中间表,将目标表中的数据放入中间表的一个分区,然后将要增加的数据放入中间表的另一个分区,然后:insert overwrite table 目标表select中间表的两个分区的数据。
如果目标表有分区则直接将要增加的数据放入目标表的一个分区。
如果要增加的数据来自hive表则用insert overwrite .... select ...语句将数据放入目标表分区
如果要增加的数据来自文件则用load data.... tablename partition...
- hive中的增删改如何实现
- hive中的增删改如何实现
- hive中的增删改如何实现
- hibernate中的增删改查实现代码
- 用AJAX实现网页中的增删改
- MySQL中的增删改
- qlistwidget中的增删改
- javascript实现增删改
- ContentProvider实现增删改
- js 如何实现对数据库的增删改查
- 如何有效实现应用系统的增删改查功能
- 基础设置中的js,实现增删改查
- java 中的 jdbc 实现 增删改查 操作
- 实现单链表中的增删查改(2)
- Hive的基本增删改查代码
- hive的简单增删改查
- Hive 表增删改查CRUD操作
- hibernate中的增删改查
- XcodeDeviceMonitor
- mybatis - 的使用 (使用配置文件)
- LINK : fatal error LNK1209--复制工程后容易出的错误
- 数据结构之队列10单链队列定义及实现
- error: asm/arch/regs-gpio.h: No such file or directory 此类问题的解决办法
- hive中的增删改如何实现
- Ubuntu 12.04中下载android源代码
- 大整数相加
- 关于metasploit的一些架构目录
- 根据被选中的 radio 值,设置 checkbox 是否可用
- CodeForces 321A Ciel and Robot(数学模拟)
- rtp协议详解/rtcp协议详解
- 云计算之数据中心
- struts2 中文乱码问题