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基础的更多相关文章

  1. Hive 教程(三)-DDL基础

    DDL,Hive Data Definition Language,数据定义语言: 通俗理解就是数据库与库表相关的操作,本文总结一下基本方法 hive 数据仓库配置 hive 数据仓库默认位置在 hd ...

  2. Java 教程整理:基础、项目全都有

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...

  3. Laravel教程 七:表单验证 Validation

    Laravel教程 七:表单验证 Validation 此文章为原创文章,未经同意,禁止转载. Laravel Form 终于要更新这个Laravel系列教程的第七篇了,期间去写了一点其他的东西. 就 ...

  4. webpack4 系列教程(七): SCSS提取和懒加载

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)webpack4 系列教程(七): SCSS 提取和懒加载. 个人技术小站: https://god ...

  5. 七. Python基础(7)--文件的读写

    七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...

  6. SpringBoot进阶教程(七十四)整合ELK

    在上一篇文章<SpringBoot进阶教程(七十三)整合elasticsearch >,已经详细介绍了关于elasticsearch的安装与使用,现在主要来看看关于ELK的定义.安装及使用 ...

  7. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. 无废话ExtJs 入门教程七[登陆窗体Demo:Login]

    无废话ExtJs 入门教程七[登陆窗体Demo:Login] extjs技术交流,欢迎加群(201926085) 在这节我们通过前几节讲的内容做一个登陆页面,把前几节讲的内容贯穿一下. 1.代码如下: ...

  9. ASP.NET 5系列教程(七)完结篇-解读代码

    在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]") ...

随机推荐

  1. C++入门经典-例7.1-对象之访问类成员

    1:建立一个类CPerson. (1)在person.h文件中代码: class CPerson { public: //数据成员 int m_iIndex; ]; short m_shAge; do ...

  2. Go 结构体与初始化

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型. 结构体是复合类型,当需要定义类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在 ...

  3. Linux TCP自连接问题

    [参考文章]:net.ipv4.ip_local_port_range 的值究竟影响了啥 [参考文章]:Linux内核参数优化 最近卸载MySQL服务偶尔会遇到MySQL端口自连接问题.导致MySQL ...

  4. TCP层shutdown系统调用的实现分析

    概述 shutdown系统调用在tcp层会调用两个函数,对于ESTABLISHED状态需要调用tcp_shutdown关闭连接,对于LISTEN和SYN_SENT状态则需要以非阻塞模式调用tcp_di ...

  5. 黑马vue---10-11、Vue实现跑马灯效果

    黑马vue---10-11.Vue实现跑马灯效果 一.总结 一句话总结: 1. 给 [浪起来] 按钮,绑定一个点击事件   v-on   @ 2. 在按钮的事件处理函数中,写相关的业务逻辑代码:拿到 ...

  6. AsyncTaskMethodBuilder

    AsyncTaskMethodBuilder Represents a builder for asynchronous methods that return a task. public stru ...

  7. python3 格式化输出,字符串操作,模块,列表,元组

    初识python,在网上看了老男孩的视频,建立一个博客将自己所学的python知识记录下来. input加密,用于输入密码的阶段. import getpass user = input(" ...

  8. 【.net core 0基础】创建你的第一个.net core应用

    1.下载.NET core相应的SDK,https://dotnet.microsoft.com/download 2.安装完成后,打开命令提示符,输入命令 dotnet,检查是否正确安装,如果命令能 ...

  9. Android应用开发编译框架流程与IDE及Gradle概要

    1 背景 建议阅读本文之前先阅读<Android Studio入门到精通>和<Groovy脚本基础全攻略>及<Gradle脚本基础全攻略>三篇博客作为背景知识,这样 ...

  10. TensorFlow 学习(1)——第一个程序:线性回归

    目前这个程序还有很多地方没有搞懂,先跑一跑例程看看效果如何.从结果来看,最终的训练成果能够接近于预设的数据