Hive-基础介绍

文章目录

  • 前言
  • 一、HiveQL介绍
    • [1. 概述](#1. 概述)
    • [2. 数据模型](#2. 数据模型)
    • [3. 数据定义语言(DDL)](#3. 数据定义语言(DDL))
      • [(1) 创建表](#(1) 创建表)
      • [(2) 创建分区表](#(2) 创建分区表)
      • [(3) 添加分区](#(3) 添加分区)
      • [(4) 删除表](#(4) 删除表)
    • [4. 数据操作语言(DML)](#4. 数据操作语言(DML))
      • [(1) 插入数据](#(1) 插入数据)
      • [(2) 查询数据](#(2) 查询数据)
      • [(3) 更新数据](#(3) 更新数据)
      • [(4) 删除数据](#(4) 删除数据)
  • 二、HiveQL函数
    • [1. 字符串函数](#1. 字符串函数)
      • [1.1 CONCAT](#1.1 CONCAT)
      • [1.2 SUBSTRING](#1.2 SUBSTRING)
      • [1.3 LOWER/UPPER](#1.3 LOWER/UPPER)
    • 2.数值函数
      • [2.1 ABS](#2.1 ABS)
      • [2.2 ROUND](#2.2 ROUND)
      • [2.3 FLOOR](#2.3 FLOOR)
    • [3. 日期函数](#3. 日期函数)
      • [3.1 YEAR](#3.1 YEAR)
      • [3.2 MONTH](#3.2 MONTH)
      • [3.3 DAY](#3.3 DAY)
    • [4. 聚合函数](#4. 聚合函数)
      • [4.1 SUM](#4.1 SUM)
      • [4.2 AVG](#4.2 AVG)
      • [4.3 MAX](#4.3 MAX)
  • 总结

前言

本文将介绍HiveQL的概述、数据模型、DDL(Data Definition Language)命令和DML(Data Manipulation Language)命令。同时还会涵盖常用字符串函数、数值函数、日期函数以及聚合函数等内容。


一、HiveQL介绍

1. 概述

  • Hive是基于Hadoop的数据仓库基础设施,它提供了一种类似于SQL的查询语言称为HiveQL(Hive Query Language)。
  • HiveQL是用于处理结构化数据的查询语言,它将SQL查询转换为MapReduce任务,从而实现在Hadoop集群上进行数据分析和处理。
  • HiveQL的设计目标是提供一种简单易用的接口,使非专业的数据分析师和开发人员能够利用Hadoop进行数据处理和分析。它的语法类似于SQL,因此熟悉SQL的人可以很容易地上手使用HiveQL。

2. 数据模型

  • HiveQL基于表的概念,它将数据组织成表,并支持表的分区和分桶。表由列和行组成,每个列都有一个数据类型。
  • Hive支持多种内置数据类型,如整数、字符串、日期等。此外,Hive还支持复杂数据类型,如数组、结构体和映射。
  • Hive的数据模型与关系型数据库的数据模型有一些区别。在Hive中,表是逻辑上的概念 ,数据存储 在Hadoop分布式文件系统(HDFS)中的文件中。每个表可以有一个或多个分区 ,分区是根据表的某个列进行划分的,这样可以提高查询效率。此外,Hive还支持将表按照某个列进行分桶,以进一步提高查询性能。

3. 数据定义语言(DDL)

HiveQL提供了一组数据定义语言(DDL)命令,用于创建、修改和删除表、分区和分桶等数据库对象。

以下是一些常用的DDL命令:

(1) 创建表

使用CREATE TABLE命令创建表,并指定表的列、数据类型和存储格式等信息。

例如:

sql 复制代码
CREATE TABLE my_table (
  id INT,
  name STRING,
  age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

在上面的示例中,我们创建了一个名为my_table的表,它包含了idnameage三个列,数据以逗号分隔(默认以制表符\t作为字段分隔符),并以文本文件的形式存储。

(2) 创建分区表

使用CREATE TABLE命令创建分区表,并指定分区列。

例如:

sql 复制代码
CREATE TABLE my_partitioned_table (
  id INT,
  name STRING,
  age INT
)
PARTITIONED BY (country STRING)
STORED AS PARQUET;

在上面的示例中,我们创建了一个名为my_partitioned_table的分区表,它包含了idnameage三个列,以及一个分区列country。数据以Parquet格式存储。

(3) 添加分区

使用ALTER TABLE命令添加新的分区。

例如:

sql 复制代码
ALTER TABLE my_partitioned_table ADD PARTITION (country='USA');

在上面的示例中,我们向my_partitioned_table表添加了一个名为USA的分区。

(4) 删除表

使用DROP TABLE命令删除表。

例如:

sql 复制代码
DROP TABLE my_table;

在上面的示例中,我们删除了名为my_table的表。

4. 数据操作语言(DML)

HiveQL提供了一组数据操作语言(DML)命令,用于查询和操作表中的数据。以下是一些常用的DML命令:

(1) 插入数据

使用INSERT INTO命令将数据插入表中。

例如:

sql 复制代码
INSERT INTO my_table (id, name, age) VALUES (1, 'Alice', 25);

在上面的示例中,我们向my_table表插入了一条数据。

(2) 查询数据

使用SELECT命令查询表中的数据。

例如:

sql 复制代码
SELECT * FROM my_table;

在上面的示例中,我们查询了my_table表中的所有数据。

(3) 更新数据

使用UPDATE命令更新表中的数据。

例如:

sql 复制代码
UPDATE my_table SET age = 30 WHERE id = 1;

在上面的示例中,我们将my_table表中id为1的记录的age字段更新为30。

(4) 删除数据

使用DELETE命令删除表中的数据。

例如:

sql 复制代码
DELETE FROM my_table WHERE id = 1;

在上面的示例中,我们删除了my_table表中id为1的记录。


二、HiveQL函数

1. 字符串函数

字符串函数在HiveQL中提供了丰富的操作和处理文本数据的功能。以下是一些常用的字符串函数:

1.1 CONCAT

CONCAT 函数用于将多个字符串拼接成一个新的字符串。它可以接受任意数量(至少两个)的参数,并按照参数顺序将它们连接起来。

示例代码:

sql 复制代码
SELECT CONCAT('Hello', ' ', 'World') AS concatenated_string;
-- 输出结果: Hello World

1.2 SUBSTRING

SUBSTRING 函数用于截取指定位置和长度的子串。它需要三个参数:源字符串、起始位置和要截取子串长度。

示例代码:

sql 复制代码
SELECT SUBSTRING('Hello World', 7, 5) AS substring_result;
-- 输出结果: World 

1.3 LOWER/UPPER

LOWER UPPER 函数分别将给定字符转换为小写或大写形式。

示例代码:

sql 复制代码
SELECT LOWER('HELLO') AS lower_case_string;   
--输出 结果 :  	hello 

SELECT UPPER ('world' ) as upper_case_string ;  
--输出 结果 :  	WORLD    

2.数值函数

数值函数可以对数字进行各种计算和转换操作,方便处理数值型数据 。以下是一些常见的数值函数:

2.1 ABS

返回给 定数字 表达 式 ( 或 列) 绝对值 。

示例代码:

sql 复制代码
SELECT ABS(-10) AS absolute_value;
-- 输出结果: 10 

2.2 ROUND

ROUND 函数用于将数字四舍五入到指定的位数。它接受两个参数:要进行四舍五入的数字表达式(或列)和保留小数点后几位。

示例代码:

sql 复制代码
SELECT ROUND(3.14159, 2) as rounded_number;  
--输出 结果 :  	3 .14   

2.3 FLOOR

FLOOR 函数返回不大于给定参数表达式(或列)最大整数。

示例代码:

sql 复制代码
SELECT FLOOR(4.9 ) as floor_number;  
--输出 结果 :  	4    

3. 日期函数

日期函数提供了处理和计算日期类型数据的功能。以下是一些常用的日期函数:

3.1 YEAR

从给定日期中提取年份 。

示例代码:

sql 复制代码
SELECT YEAR('2021-09-01') AS extracted_year;
-- 输出结果:2021   

3.2 MONTH

从给定日历中提取月份。

示例如下 :

sql 复制代码
SELECT MONTH ('2021 -09 -01' ) as extracted_month ;
--输出 结 果 :9     

3.3 DAY

从给定日历中提取天数 。

示例如下 :

sql 复制代码
SELECT DAY ('2021 -09 -01' )as extracted_day ;    
--输 出结 果 :1     

4. 聚合函数

聚合函数在HiveQL中用于对数据进行汇总计算,常见的聚合函数包括:

4.1 SUM

SUM 函数用于计算指定列或表达式的总和。

示例代码:

sql 复制代码
CREATE TABLE sales (
    product_id INT,
    quantity INT,
    price DECIMAL(10,2)
);

INSERT INTO sales VALUES (1,10,100),(2,5 ,200),(1 ,20 ,50 );

SELECT SUM(quantity) as total_quantity FROM sales; 
-- 输出结果: 35  

4.2 AVG

AVG 函数用于计算指定列或表达式的平均值。

示例代码:

sql 复制代码
SELECT AVG(price) as average_price FROM sales ;
-- 输出结果:116 .67    

4.3 MAX

返回指定列或表达式的最大值。

示例代 码:

sql 复制代码
SELECT MAX(quantity) as max_quantity FROM sales ;  
--输出 结果 :  	20     

总结

HiveQL是Hive的查询语言,它提供了类似于SQL的语法,用于在Hadoop集群上进行数据分析和处理。本文详细介绍了HiveQL的概述、数据模型、DDL和DML命令、数据转换函数。通过学习和使用HiveQL,您可以更方便地利用Hadoop进行大数据处理和分析。

希望通过阅读本文能够对您理解和使用 HiveQL 有所帮助。

参考链接:

相关推荐
随心............4 小时前
sqoop采集完成后导致hdfs数据与Oracle数据量不符的问题。怎么解决?
hive·hadoop·sqoop
随心............1 天前
yarn面试题
大数据·hive·spark
随心............2 天前
在开发过程中遇到问题如何解决,以及两个经典问题
hive·hadoop·spark
yumgpkpm2 天前
CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境 查询2100w行 hive 查询策略
数据库·数据仓库·hive·hadoop·flink·mapreduce·big data
starfalling10244 天前
【hive】一种高效增量表的实现
hive
D明明就是我4 天前
Hive 拉链表
数据仓库·hive·hadoop
嘉禾望岗5034 天前
hive join优化和数据倾斜处理
数据仓库·hive·hadoop
yumgpkpm4 天前
华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
大数据·hive·hadoop·elasticsearch·zookeeper·big data·cloudera
忧郁火龙果4 天前
六、Hive的基本使用
数据仓库·hive·hadoop
忧郁火龙果4 天前
五、安装配置hive
数据仓库·hive·hadoop