Hive数据操纵语言

13 篇文章 0 订阅

修改Hive中的数据有两种主要的方式:


加载文件到表中

HIVE在加载数据到表中的时候并不作任何的转换。现在的加载操作只是纯的复制/移动操作,将数据文件移动到对应的hive表的位置。

load data [local] inpath 'filepath' [overwrite] into table tablename [partition (parcol1=val1, partcol2=val2 ...)];

现在的加载操作只是纯的复制/移动操作,将数据文件移动到对应的hive表的位置。

-

. filepath可以使相对路径,比如:project/data1

. 绝对路径, 比如:/user/hive/project/data1

. 一个URI,比如:hdfs://namenode:9000/user/hive/project/data1

-

. 目标可以是一个标或者一个分区。如果在欢歌标识分区的,必须指明一个特殊的分区,每个分区字段都要填写。

. filepath可以使一个文件(将这个文件移动到表中)也可以是一个目录(将这个目录的所有的文件移动到表中)。两种情况都是文件集合的地 址。

. 如果指明了local:

load命令将在本地文件系统中寻找filepath。如果一个相对路径指明-它将被解释成用户的当前目录。用户也可以指定一个ie文件的统一资源定位符,如file:///user/hive/project/data1

. load命令将试filepath指明的地址下的所有的文件复制到目标文件系统。目标文件系统是通过查找表的位置属性来判断的。然后被复制的数据就被移动到表中了。

-

. 如果local没有被指定,如果指明了filepath, hive将使用filepath的全URI。否则遵循下面的规则:

如果scheme或者authority没有指定,hive将使用hadoop设置的变量fs.default.name指定的名字节点URI。

如果路径不是绝对的-然后hive将解释它成/user/<username>

hvie将移动filepath指定的文件到表或者分区中。

如果overwrite指定,目标表的内容将被删除,被filepath下的文件内容代替。否则俄新的文件内容将附加在表中。

注意,如果目标表或者分区已经有文件和filepath下的任何文件冲突-已经存在的文件将被新的文件代替。

注意:

filepath不能有子文件夹;

如果我们没用local-filepath必须指向和表或者分区在同一个文件系统下的文贱。

hive确实做一些检查来确定加载的数据与表匹配。现在它检查表是否以顺序格式存储-那样被加载的文件也市顺序文件,反之亦然。

从查询中插入数据到表中

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

标准语法:inserty overwrite table tablename1 [partition (par=val1, par2=val2 ...)] select_statement1 from_statement;

hive扩展:

from from_statement

insert overwrite table tablename1 [partition (...)] select_statement1

[insert overwrite tabe tablename2 [partition...] select_statement2]...

Hive扩展:

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



从查询,写数据到文件




标准语法:

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 SELECT ... FROM ...



hive扩展:



FROM from_statement

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1

[INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2] ...

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值