日记大全

日记大全 > 句子大全

「挑战30万年薪」Hive语句详解之DML操作「元数据存储」

句子大全 2017-09-04 06:10:27
相关推荐

DML操作:

hive不支持用insert语句一句一句的进行插入操作,也不支持update操作。

数据是以load的方式加载到建立好的表中。

数据一旦导入就不能进行修改。

DML包括什么?

插入:INSERT 更新:UPDATE 删除:DELETE

向数据表内加载文件

将查询结果插入到Hive中

insert into

向数据表内加载数据

LOAD DATA [LOCAL] INPATH "filepath" [OVERWRITE] INTO TABLE tablename [PARTITION (partcol = val,partcol1 = val1 ,....)]

解释:

LOAD 将数据文件移动到Hive表对应位置 。

filepath

相对路径,例如:project/data1

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

包含模式的完整URL地址,例如:hdfs://namenode:9000/user/hive/project/data1

加载本地数据,并且给定分区信息:

加载的目标可以是一个表或者分区

如果表包含分区,就必须指定每一个分区的分区名

filepath可以引用一个文件(Hive会将文件移动到对应目录)或者一个目录

LOCAL关键字:

指定了LOCAL,及本地

load命令去查找本地文件系统中的filepath

如果发现是相同的路径,则会被解释为该用户的当前路径

用户也可以为本地文件指定一个完整的URL,如:file:///user/hive/project/data1.

load 命令会将filepath中的文件复制到目标文件系统中。

目标文件系统由表的位置属性决定。

被复制的数据文件移动到表的数据对应位置。

例如:加载本地数据,同时给定分区信息:

LOAD DATA LACAL INPATH "./file/test.txt" OVERWRITE INTO TABLE invites PARTITION (DS = "2020-07-04");

解释:

没有指定LOCAL,如果filepath指向是一个完整的URL,hive会直接使用这个url。

如果没有指定schema或者authority,Hive会使用在Hadoop配置文件定义的schema和authority,fs.default.name指定了Namenode的url

如果路径不说绝对的,Hive相对于/user/进行操作。Hive会将filepath中的文件移动到table或者partition所指定的路径中。

加载DFS数据,同时给定分区信息

LOAD DATA INPATH "/user/myname/kv2.txt" OVERWRITE INTO TABLE invites PARTITION(ds="2020-07-04); The above command will load data from an HDFS file/directory to the table.Note that loading data from HDFS will result in moving the file/directory.As a result,the operation is almost instantaneous.

OVERWRITE

指定overwrite

目标表或者分区中的内容如果有会被删除,然后再将filepath指向文件/目录的内容加载到表/分区中。

如果表/分区已经有一个文件,并且文件名和filepath中的文件名冲突,那么现有的文件会被新文件代替覆盖。

将查询结果插入Hive表中:

将查询结果插入Hive表

将查询结果写入HDFS文件系统

基本模式

INSERTOVERWRITE TABLE tablename1[PARTITION(partcol1=val1,partcol2=val2...)]

select_statement1 FROM from_statement

多插入模式

FROM from_statement

INSERT OVERWRITE TABLE tablename1 [PARTITION(partcoli=vall,partcol2=val2....)] select statementi [INSERT OVERWRITE TABLE tablename2 [PARTITION..] select_ statement2].…

自动分区模式

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

将查询结果写入HDFS文件系统:

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

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_ statement1 [INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2]

数据写入文件系统时进行文本序列化,且每列用~A来区分,n换行

INSERT INTO

INSERT INTO TABLE tablename1 [PARTITION(partcol1=val1,partcol2=val2..…)] select_ statement1 FROM from_statement

如果觉得对你有所帮助。记得收藏和关注呦!(每日更新各种大数据框架)

如需转载请注明出处(创作不易请见谅)

和巨婴程序猿一起成长。让自己变得更优秀

想了解更多精彩内容,快来关注跟着巨婴去逆袭

我最近一直在思考(大数据通俗讲解)的问题,你的看法是什么呢?关注我快说出来一起交流一下吧~

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新