IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hive Sql (一) -> 正文阅读

[大数据]Hive Sql (一)

目录

1.HIVE的数据类型

1.1.基本数据类型

2.2.复杂数据类型

2.创建、使用、删除数据库

2.1.创建数据库

2.2.使用数据库

2.3.删除数据库

3.创建、修改、删除表

3.1.创建表

3.2.修改表

3.3.删除表

4.表的类型

4.1.内部表

4.2.外部表

4.3.分区表

5.导入导出数据

5.1.导入分区数据

5.2.1.从本地导入到hive表

5.2.2.从hdfs导入到hive表

5.3.导出数据

5.3.1.将hive表保存到本地

5.3.2.将hive表保存到hdfs


1.HIVE的数据类型

1.1.基本数据类型

类型注释
STRING文本型,数值也可以定义为该类型,并且可以运算,要注意的是排序会按照文本排序(如,9、10升序,因为10的第一个文本是1,因此10在9前面)
INT/INTEGER整型
DATE日期型

2.2.复杂数据类型

类型注释例子
ARRAY一组有序字段,类型必须相同ARRAY(1,2)
MAP一组无序的键值对,键的类型必须是原子,值可以是任何类型,同一个映射的键的类型必须相同,值的类型也必须相同MAP('a',1,'b',2)
STRUCT一组命名的字段,字段的类型可以不同STRUCT('a',1,2,3)

创建:

CREATE TABLE T1 (id INT

, hobby ARRAY<STRING>

, family_name MAP<STRING,STRING>

, info STRUCT < age : INT, sex : STRING , address : STRING>);

查询:

SELECT id, family_name('father') --仅查看family_name的father名字

SELECT id, MAP_KEYS(family_name) --查看所有键

SELECT id, info.age --仅查看info的年龄

MAP、STRUCT的展示结果:{"":"" , "":"",...,"":""}

2.创建、使用、删除数据库

2.1.创建数据库

语法:
CREATE (DATABASE | SCHEMA) [IF NOT EXIST] database_name
[COMMENT database_comment]
[LOCATION location_path]
[WITH DBPROPERTIES (property_name=property_values,...)]
?
例子:
CREATE DATABASE myhive
COMMENT test;

2.2.使用数据库

语法: USE database_name;
例子: USE myhive;

2.3.删除数据库

语法:DROP (DATABASE | SCHEMA) [IF EXIST] database_name [RESTRICT | CASCADE] ? 注:RESTRICT | CASCADE强制删除
?
例子:DROP DATABASE myhive;

3.创建、修改、删除表

3.1.创建表

1.直接建表
CREATE TABLE t1(id INT
,name STRIGN
,hobby ARRAY<STRING>
,address AMP<STRING,STRING>)
ROW FORMAT DELIMITIED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '-'
MAP KEYS TERMINATED BY ';'
?
2.查询建表(结构+数据)
CREATE TABLE t1 AS SELECT * FROM t2;
?
3.like建表 (仅结构)
CREATE TABLE t1 LIKE t2;

3.2.修改表

1.修改表名
ALTER TABLE t1 RENAME TO t2;
?
2.修改列名
ALTER TABLE t1 CHANGE columns_name new_name new_type;
?
3.增/删列
ALTER TABLE t1 ADD/DROP COLUMNS(age INT);

3.3.删除表

DROP TBALE [IF EXIST] t1;

4.表的类型

一般使用外部表,外部表的好处:当hive删除了外部表,hdfs映射的表依然不受影响,还存在;而内部表被hive删除后,hdfs映射的表也会被删除。

4.1.内部表

CREATE TABLE t1(id INT,...)

4.2.外部表

CREATE  EXTERNAL TABLE t1(id INT,...) ?--仅多了EXTERNAL

4.3.分区表

CREATE ?[EXTERNAL] TABLE t1(id INT,...)
PARTITION BY (dt STRING, country STRING);--定义分区
LOAD DATA LOCAL INPATH '/home/hadoop/file1' INTO TABLE t1
PARTITION (dt='2021-08-06', country='CHINA') --插入分区信息
  • 什么是分区?建表的时候,将表放在指定的区域上(相当于指定了索引名)

  • 为什么需要分区?因为,当表格规模巨大的时候,查询起来非常慢,为了提高查询效率,需要依靠定位分区(类比索引效果)代替全表搜索

  • 什么表需要分区?表格规模巨大,比如:事实表(订单表、退款表等)

  • 如何制定分区?partition by (part_col1=value1,part_col2=value2,...)

  • 查询时的注意什么?需要在where中加上分区的具体条件

5.导入导出数据

5.1.导入分区数据

LOAD DATA [LOCAL] INPATH '/home/hadoop/file1' [OVERWRITE] INTO TABLE t1 PARTITION (dt='2021-08-06', country='CHINA')

5.2.1.从本地导入到hive表

LOAD DATA LOCAL INPATH '/home/hadoo t' INTO TABLE t1;

5.2.2.从hdfs导入到hive表

LOAD DATA INPATH '/file1.txt' INTO TABLE t1;

5.3.导出数据

5.3.1.将hive表保存到本地

INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/t1' SELECT * FROM t1;

5.3.2.将hive表保存到hdfs

INSERT OVERWRITE DIRECTORY '/abc' SELECT * FROM t1;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:18:18  更:2021-08-09 10:19:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:14:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码