Hive 教程(七)-DML基础
DML,Hive Data Manipulation Language,数据操作语言;
通俗理解就是数据库里与数据的操作,如增删改查,统计汇总等;
Loading files into tables
把文件数据写入 table,load 操作不对数据做任何转换
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde'] (3.0 or later)
比较好理解,这里只解释可选项:
local:本地文件,如果上传本地文件,需注明 local,默认是 hdfs;
overwrite:覆盖之前的数据,默认是 追加;
partition:分区表加载数据,这个参数指定 load 到哪个分区;
示例
load data local inpath '/usr/lib/hive2.3.6/2.csv' into table student_p partition(part=888);
Inserting data into Hive Tables from queries
把子查询结果写入 table
Standard syntax:
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;
注意这里是标准语法,还有 扩展语法,参见官网
示例
insert into table student_p partition(part=986) select id, name, sexex, age, dept from student_p;
这里我把一个分区的数据加载到另一个分区,并没有 select *,因为 select * 的字段多一个 part/分区字段
多插入模式
把多个查询结果写入 table
from student_p
insert into table student_p partition(part=984) select id, name, sexex, age, dept from student_p where part=888
insert into table student_p partition(part=983) select id, name, sexex, age, dept from student_p where part=888;
把子查询的 form 提取出来了;
把不同表查询出来的结果写入 table,没试过,自己可以试试
分区 DML 注意事项
1. load 和 insert 都会自动创建分区
2. 分区表 写入数据都会启动 mr
Writing data into the filesystem from queries
把子查询的结果写入文件系统
Standard syntax:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
[ROW FORMAT row_format] [STORED AS file_format] (Note: Only available starting with Hive 0.11.0)
SELECT ... FROM ... Hive extension (multiple inserts):
FROM from_statement
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1
[INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2] ... row_format
: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
[NULL DEFINED AS char] (Note: Only available starting with Hive 0.13)
1. 只能是 overwrite
2. 只能存入路径,文件名自动生成
3. 存储的文件格式如果是 txt,写成 stored as textfile
示例
insert overwrite local directory '/usr/lib/hive2.3.6/3.txt' row format delimited fields terminated by '\t' stored as orc select * from student_p;
Inserting values into tables from SQL
像普通数据库一样写入数据
Standard Syntax:
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...] Where values_row is:
( value [, value ...] )
where a value is either null or any valid SQL literal
官网例子 - 分桶
// 分桶表,在创建表时,可以指定每个桶的大小,2 BUCKETS,代表如果 hadoop 默认 block 为 64M 的话,每个桶大小为 128M
CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3, 2))
CLUSTERED BY (age) INTO 2 BUCKETS STORED AS ORC; INSERT INTO TABLE students
VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32); // 分区表+分桶表,注意,桶的大小是 block 的 偶数倍,即使指定 3 BUCKETS,会自动转换成 4 BUCKETS
CREATE TABLE pageviews (userid VARCHAR(64), link STRING, came_from STRING)
PARTITIONED BY (datestamp STRING) CLUSTERED BY (userid) INTO 256 BUCKETS STORED AS ORC; INSERT INTO TABLE pageviews PARTITION (datestamp = '2014-09-23')
VALUES ('jsmith', 'mail.com', 'sports.com'), ('jdoe', 'mail.com', null); INSERT INTO TABLE pageviews PARTITION (datestamp)
VALUES ('tjohnson', 'sports.com', 'finance.com', '2014-09-23'), ('tlee', 'finance.com', null, '2014-09-21'); INSERT INTO TABLE pageviews
VALUES ('tjohnson', 'sports.com', 'finance.com', '2014-09-23'), ('tlee', 'finance.com', null, '2014-09-21');
Update
Updates can only be performed on tables that support ACID. See Hive Transactions for details.
UPDATE tablename SET column = value [, column = value ...] [WHERE expression]
不好用
Delete
Deletes can only be performed on tables that support ACID. See Hive Transactions for details.
DELETE FROM tablename [WHERE expression]
Merge
Merge can only be performed on tables that support ACID. See Hive Transactions for details.
Standard Syntax:
MERGE INTO <target table> AS T USING <source expression/table> AS S
ON <boolean expression1>
WHEN MATCHED [AND <boolean expression2>] THEN UPDATE SET <set clause list>
WHEN MATCHED [AND <boolean expression3>] THEN DELETE
WHEN NOT MATCHED [AND <boolean expression4>] THEN INSERT VALUES<value list>
其他
As Select
在建表的同时加载子查询的结果
create table student3 as select id, name form student2;
location
在建表时通过 location 指定被加载的数据
create table student4(id int, name string) location '/usr/hive/student4';
具体怎么回事可以参考我的 DDL 介绍,不难理解
import
不常用,自己百度下吧
参考资料:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML 官网
Hive 教程(七)-DML基础的更多相关文章
- Hive 教程(三)-DDL基础
DDL,Hive Data Definition Language,数据定义语言: 通俗理解就是数据库与库表相关的操作,本文总结一下基本方法 hive 数据仓库配置 hive 数据仓库默认位置在 hd ...
- Java 教程整理:基础、项目全都有
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...
- Laravel教程 七:表单验证 Validation
Laravel教程 七:表单验证 Validation 此文章为原创文章,未经同意,禁止转载. Laravel Form 终于要更新这个Laravel系列教程的第七篇了,期间去写了一点其他的东西. 就 ...
- webpack4 系列教程(七): SCSS提取和懒加载
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)webpack4 系列教程(七): SCSS 提取和懒加载. 个人技术小站: https://god ...
- 七. Python基础(7)--文件的读写
七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...
- SpringBoot进阶教程(七十四)整合ELK
在上一篇文章<SpringBoot进阶教程(七十三)整合elasticsearch >,已经详细介绍了关于elasticsearch的安装与使用,现在主要来看看关于ELK的定义.安装及使用 ...
- CRL快速开发框架系列教程七(使用事务)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 无废话ExtJs 入门教程七[登陆窗体Demo:Login]
无废话ExtJs 入门教程七[登陆窗体Demo:Login] extjs技术交流,欢迎加群(201926085) 在这节我们通过前几节讲的内容做一个登陆页面,把前几节讲的内容贯穿一下. 1.代码如下: ...
- ASP.NET 5系列教程(七)完结篇-解读代码
在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]") ...
随机推荐
- BZOJ 4042 Luogu P4757 [CERC2014]Parades (树形DP、状压DP)
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4042 (Luogu) https://www.luogu.org/prob ...
- 将maven项目发布到私服
1.局域网私服 首先保证已经安装配置好了局域网的私服(具体私服的搭建可以查看相关资料) 私服页面访问地址:http://192.168.0.110:8081/nexus,使用admin登录,默认的用户 ...
- 主线程 Looper.loop() 死循环为何不会ANR
先看下 ActivityThread 中的这段代码: 而 loop() 方法中,存在一个死循环: public static void loop() { ... ... ... for (;;) { ...
- SRS之RTMP handshake
1. SrsRtmpServer::handshake 位于 srs_rtmp_stack.cpp. int SrsRtmpServer::handshake() { int ret = ERROR_ ...
- Visual Studio Code 编辑器使用
image.png 之前一直都是用 sublime text 作为开发工具,用久了自然而然会觉得生活无趣,而且当时用sublime text 装了很多插件,有些插件不能用,于是决定试试微软的新产品 ...
- weblogic性能调优
1.设置java参数: a) 编辑Weblogic Server启动脚本文件: /user_projects/domains/Domain_jgbs/bin/startWebLogic.sh /use ...
- websphere gc策略调整
根据应用服务器处理的特性,适配不同的gc策略,验证程序最适合程序的gc策略: server.xml路径: xmlcells/PBOCCell/nodes/PBOCNode01/servers/PBOC ...
- mandatory argument 'crshome' is missing
1. 错误信息 在oracle 10.2.0.4 to 11.1.0.6 的各个版本中,尽管变量ORA_CRS_HOME设置正确,也会遇到如下错误: # ./diagcollection.pl -c ...
- 2019-8-13未命名文件 sdfsdfsdfsdfsdfsdf
2019-8-13未命名文件 sdfsdfsdfsdfsdfsdf 新建模板小书匠 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 小书匠主按钮>模板 里的模板管理来改变新建文章 ...
- MEF部件的生命周期(PartCreationPolicy)
一.演示概述 本演示介绍了MEF的生命周期管理,重点介绍了导出部件的三种创建策略,分别是:CreationPolicy.Any.CreationPolicy.Shared.CreationPolicy ...