Hive-基础介绍

文章目录

  • 前言
  • 一、HiveQL介绍
    • 1. 概述
    • 2. 数据模型
    • 3. 数据定义语言(DDL)
      • (1) 创建表
      • (2) 创建分区表
      • (3) 添加分区
      • (4) 删除表
    • 4. 数据操作语言(DML)
      • (1) 插入数据
      • (2) 查询数据
      • (3) 更新数据
      • (4) 删除数据
  • 二、HiveQL函数
    • 1. 字符串函数
      • 1.1 CONCAT
      • 1.2 SUBSTRING
      • 1.3 LOWER/UPPER
    • 2.数值函数
      • 2.1 ABS
      • 2.2 ROUND
      • 2.3 FLOOR
    • 3. 日期函数
      • 3.1 YEAR
      • 3.2 MONTH
      • 3.3 DAY
    • 4. 聚合函数
      • 4.1 SUM
      • 4.2 AVG
      • 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命令创建表,并指定表的列、数据类型和存储格式等信息。

例如:

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命令创建分区表,并指定分区列。

例如:

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命令添加新的分区。

例如:

ALTER TABLE my_partitioned_table ADD PARTITION (country='USA');

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

(4) 删除表

使用DROP TABLE命令删除表。

例如:

DROP TABLE my_table;

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

4. 数据操作语言(DML)

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

(1) 插入数据

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

例如:

INSERT INTO my_table (id, name, age) VALUES (1, 'Alice', 25);

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

(2) 查询数据

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

例如:

SELECT * FROM my_table;

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

(3) 更新数据

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

例如:

UPDATE my_table SET age = 30 WHERE id = 1;

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

(4) 删除数据

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

例如:

DELETE FROM my_table WHERE id = 1;

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


二、HiveQL函数

1. 字符串函数

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

1.1 CONCAT

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

示例代码:

SELECT CONCAT('Hello', ' ', 'World') AS concatenated_string;
-- 输出结果: Hello World

1.2 SUBSTRING

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

示例代码:

SELECT SUBSTRING('Hello World', 7, 5) AS substring_result;
-- 输出结果: World 

1.3 LOWER/UPPER

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

示例代码:

SELECT LOWER('HELLO') AS lower_case_string;   
--输出 结果 :  	hello SELECT UPPER ('world' ) as upper_case_string ;  
--输出 结果 :  	WORLD    

2.数值函数

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

2.1 ABS

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

示例代码:

SELECT ABS(-10) AS absolute_value;
-- 输出结果: 10 

2.2 ROUND

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

示例代码:

SELECT ROUND(3.14159, 2) as rounded_number;  
--输出 结果 :  	3 .14   

2.3 FLOOR

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

示例代码:

SELECT FLOOR(4.9 ) as floor_number;  
--输出 结果 :  	4    

3. 日期函数

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

3.1 YEAR

从给定日期中提取年份 。

示例代码:

SELECT YEAR('2021-09-01') AS extracted_year;
-- 输出结果:2021   

3.2 MONTH

从给定日历中提取月份。

示例如下 :

SELECT MONTH ('2021 -09 -01' ) as extracted_month ;
--输出 结 果 :9     

3.3 DAY

从给定日历中提取天数 。

示例如下 :

SELECT DAY ('2021 -09 -01' )as extracted_day ;    
--输 出结 果 :1     

4. 聚合函数

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

4.1 SUM

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

示例代码:

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 函数用于计算指定列或表达式的平均值。

示例代码:

SELECT AVG(price) as average_price FROM sales ;
-- 输出结果:116 .67    

4.3 MAX

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

示例代 码:

SELECT MAX(quantity) as max_quantity FROM sales ;  
--输出 结果 :  	20     

总结

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

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

参考链接:

  • Apache Hive官方文档
  • HiveQL语法参考
  • HiveQL内置函数参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/237463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT一周年:开源语言大模型的冲击

自2022年末发布后,ChatGPT给人工智能的研究和商业领域带来了巨大变革。通过有监督微调和人类反馈的强化学习,模型可以回答人类问题,并在广泛的任务范围内遵循指令。在获得这一成功之后,人们对LLM的兴趣不断增加,新的LL…

R语言【base】——invisible将控制台的输出模式调整为隐藏,只允许赋值后输出,返回对象的(临时)不可见副本

Package base version 4.3.2 invisible(x NULL) 参数【x】&#xff1a;一个任意的 R 对象&#xff0c;默认为 NULL。 如果希望函数返回的值可以赋值&#xff0c;但在未赋值时不打印&#xff0c;则可以使用该函数。 f <- function(x){if (x){return (x)} else {return (in…

阿里云ECS配置IPv6后,如果无法访问该服务器上的网站,可检查如下配置

1、域名解析到这个IPv6地址,同一个子域名可以同时解析到IPv4和IPv6两个地址&#xff0c;这样就可以给网站配置ip4和ipv6双栈&#xff1b; 2、在安全组规则开通端口可访问&#xff0c;设定端口后注意授权对象要特殊设置“源:::/0” 3、到服务器nginx配置处&#xff0c;增加端口…

react v-18父组件调用子组件的方法和数据

版本 "react": "^18.1.0", "react-dom": "^18.1.0", 父组件 import React, { useState, useRef, memo, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Card } from &q…

Qt之QWidget 自定义倒计时器

简述 Qt提供的带进度显示的只有一个QProgresBar,这个控件要么是加载进度从0~100%,要么是持续的两边滚动;而我想要是倒计时的效果,所以QProgresBar并不满足要求,而Qt重写控件相对于MFC来说简直是轻而易举,所以就整了两种不同的倒计时控件; 效果 代码 QPushButton的绘制部…

2023 英特尔On技术创新大会直播 | AI魅力的生活化

目录 前言正文 前言 依稀记得去年的直播大会&#xff0c;主要展现了其灵活、加速和半集成化的独特优势&#xff0c;广泛应用于人工智能、5G通信、边缘计算以及视觉图像处理等领域&#xff0c;不断提供领先的性能、能效和可编程性的创新。 如今又带来一些不一样的特色&#xf…

通过U盘:将电脑进行重装电脑

目录 一.老毛桃制作winPE镜像 1.制作准备 2.具体制作 下载老毛桃工具 插入U盘 选择制作模式 正式配置U盘 安装提醒 安装成功 具体操作 二.使用ultrasio制作U盘 1.具体思路 2.图片操作 三.硬盘安装系统 具体操作 示例图 ​编辑 一.老毛桃制作winPE镜像 1.制作准…

【Pytorch】学习记录分享6——PyTorch经典网络 ResNet与手写体识别

【Pytorch】学习记录分享5——PyTorch经典网络 ResNet 1. ResNet &#xff08;残差网络&#xff09;基础知识2. 感受野3. 手写体数字识别3. 0 数据集&#xff08;训练与测试集&#xff09;3. 1 数据加载3. 2 函数实现&#xff1a;3. 3 训练及其测试&#xff1a; 1. ResNet &…

volatile关键字

1.什么是volatile? 1.1.volatile是一种同步机制,比synchronized或Lock更轻量级,因为使用volatile并不会发生线程“上下 文切换”等开销很大的行为,volatile关键字只是把被修饰的变量修改后刷新到“主内存”中; 1.2.如果一个变量被volatile修饰,那么JVM就知道这个变量可能会被…

Bash 脚本学习

文章目录 1、脚本编程基础2. 变量2.1 参数变量的引用2.2 环境变量 3 条件判断语句3.1 if 语句3.1.1 语法3.1.2 案例 3.2 case 语句3.2.1 语法3.2.2 案例 3.3 判断参数说明 4 循环语句4.1 for 循环4.1.1 语法4.1.2 案例 4.2 while循环4.2.1 语法4.2.2 案例4. 3 循环总结 5. 函数…

Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术

Hertz A, Mokady R, Tenenbaum J, et al. Prompt-to-prompt image editing with cross attention control[J]. arXiv preprint arXiv:2208.01626, 2022. Prompt-to-Prompt 是 Google 提出的一种全新的图像编辑方法&#xff0c;不同于任何传统方法需要用户指定编辑区域&#xff…

微信小程序开发系列-01创建一个最小的小程序项目

本文讲述了通过微信开发者工具&#xff0c;创建一个新的小程序项目&#xff0c;完全从零开始&#xff0c;不依赖开发者工具的模板。目的是为了更好的理解小程序工程项目的构成。 文章目录 创建一个空项目app.json全局配置pagessitemapLocation app.js 创建一个空项目 打开微信…

新型智慧视频监控系统:基于TSINGSEE青犀边缘计算AI视频识别技术的应用

边缘计算AI智能识别技术在视频监控领域的应用有很多。这项技术结合了边缘计算和人工智能技术&#xff0c;通过在摄像头或网关设备上运行AI算法&#xff0c;可以在现场实时处理和分析视频数据&#xff0c;从而实现智能识别和分析。目前来说&#xff0c;边缘计算AI视频智能技术可…

aws-waf-cdn 基于规则组的永黑解决方案

1. 新建waf 规则组 2. 为规则组添加规则 根据需求创建不同的规则 3. waf中附加规则组 &#xff08;此时规则组所有规则都会附加到waf中&#xff0c;但是不会永黑&#xff09; 此刻&#xff0c;可以选择测试下规则是否生效&#xff0c;测试前确认保护资源绑定无误 4. 创建堆…

大数据开发职业规划

大数据开发职业规划 我的学历是双非本&#xff0c;在学校学习的是大数据专业&#xff0c;目前是在企业做大数据全栈的工作&#xff0c;爬虫&#xff0c;数仓&#xff0c;风控项目&#xff0c;etl开发都做 .................................................................…

FFmpeg实现rtp推流

以下是一个简单的示例代码&#xff0c;演示了如何使用 UDP 或 TCP 进行音视频传输&#xff1a; 代码未经验证&#xff0c;供参考 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #in…

Mac设置ll永久生效,设置.bash_profile生效

Mac设置ll永久生效&#xff0c;设置.bash_profile生效 前言&#xff1a;Mac上自带的终端不好用&#xff0c;一般我推荐ITerm终端&#xff0c;官网下载即可 如果想只生效一次&#xff1a; 直接在终端执行alias llls -l即可 如果想永久生效&#xff1a; vim ~/.bash_profile&…

02 - Kbuild子系统(整理中)

1. Kbuild简介 Kernel build&#xff0c;用来编译 Linux 内核基于 GNU make 设计&#xff0c;对 Makefile 进行扩充 菜单式配置&#xff1a;Kconfig预定义目标和变量&#xff1a;xx_defconfig、menuconfig、obj-y跨平台工具、递归式 Makefile Linux 模块化设计、高度可以裁剪 …

java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈

单点登录&#xff08;SSO&#xff09; 单点登录&#xff0c;Single Sign On&#xff08;简称SSO&#xff09;,只需要登录一次&#xff0c;就可以访问所有信任的应用系统。 如果是单个tomcat服务&#xff0c;session可以共享&#xff0c;如果是多个tomcat&#xff0c;那么服务s…

tcp 的限制 (TCP_WRAPPERS)

#江南的江 #每日鸡汤&#xff1a;青春是打开了就合不上的书&#xff0c;人生是踏上了就回不了头的路&#xff0c;爱情是扔出了就收不回的赌注。 #初心和目标&#xff1a;拿到高级网络工程师 TCP_WRAPPERs Tcp_wrappers 对于七层模型中是位于第四层的安全工具&#xff0c;他…