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 有所帮助。

参考链接:

相关推荐
时差95311 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
苍老流年11 小时前
Hive中各种Join的实现
数据仓库·hive·hadoop
静听山水11 小时前
Hive:UDTF 函数
hive
EDG Zmjjkk12 小时前
Hive 查询(详细实操版)
数据仓库·hive·hadoop
lzhlizihang14 小时前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
Hsu_kk14 小时前
Hive 查询各类型专利 Top 10 申请人及对应的专利申请数
数据仓库·hive·hadoop
静听山水14 小时前
Hive 的数据存储单元结构
hive
大数据编程之光14 小时前
Hive 查询各类型专利 top10 申请人及专利申请数
大数据·数据仓库·hive·hadoop
杰克逊的日记14 小时前
Hive详解
数据仓库·hive·hadoop
Hsu_kk16 小时前
Hive 查询用户连续三天登录的所有记录
数据仓库·hive·hadoop