Apache Hive DML语句及内置函数

news2025/1/18 3:21:24

目录

    • 1、Hive SQL DML语法之加载数据
      • 1.1 Load加载数据
      • 1.2 Insert插入数据
    • 2、DML语法之查询数据
    • 3、Hive 常用函数
      • 3.1 Hive 常用的内置函数
        • 3.1.1 字符串函数
        • 3.1.2 日期函数
        • 3.1.3 数学函数
        • 3.1.4 条件函数

1、Hive SQL DML语法之加载数据

1.1 Load加载数据

在Hive中建表成功之后,就会在HDFS上创建一个与之对应的文件夹,且文件夹名字就是表名
文件夹父路径是由参数hive.metastore.warehouse.dir控制,默认值是/user/hive/warehouse;

法一:可以直接在web网页上上传数据:
在这里插入图片描述
在这里插入图片描述
法二:hadoop fs –put 方法
node1中:

ll
vim 1.txt #创建1.txt并输入下面内容
cat 1.txt
1,allen,18
2,james,20
3,kobe,24

在node2的hive中,创建表:

use ithei #使用库
create table 1.txt(id int,name string,age int) row format delimited fields terminated by ',';

回到node1,上传数据:

hadoop fs -put 1.txt /user/hive/warehouse/ithei/t_1

法三:load加载
法一法二是底层hdfs上直接操作,不推荐
推荐使用hdfs的load加载

LOAD DATA [LOCAL] INPATH ‘filepath’ [OVERWRITE] INTO TABLE tablename;
local不写默认是从hdfs上的文件复制到表下,写则是从本地

LOCAL本地是哪里?
本地文件系统指的是Hiveserver2服务所在机器的本地Linux文件系统,不是Hive客户端所在的本地文件系统。

在datagrip中,SQL语法选hive,会话连接

show databases; #查询是否正常连接
use itheima;

--step1:建表
--建表student_local 用于演示从本地加载数据
create table student_local(num int,name string,sex string,age int,dept string) row format delimited fields terminated by ',';
--建表student_HDFS  用于演示从HDFS加载数据
create table student_HDFS(num int,name string,sex string,age int,dept string) row format delimited fields terminated by ',';


--建议使用beeline客户端 可以显示出加载过程日志信息
--step2:加载数据
-- 从本地加载数据  数据位于HS2(node1)本地文件系统  本质是hadoop fs -put上传操作
LOAD DATA LOCAL INPATH '/root/hivedata/students.txt' INTO TABLE student_local;
--从HDFS加载数据  数据位于HDFS文件系统根目录下  本质是hadoop fs -mv 移动操作
--先把数据上传到HDFS上  hadoop fs -put /root/hivedata/students.txt /
LOAD DATA INPATH '/students.txt' INTO TABLE student_HDFS;

1.2 Insert插入数据

create table t_2(id,int name string);
insert into t_2(1,'zhangsan')
#这样标准的insert语法,可以插入,但是会执行一个mr程序-慢,所以不推荐

yarn的web页面,http:8088

最常用的使用是:把查询返回的结果插入到另一张表中。

insert+select

insert+select表示:将后面查询返回的结果作为内容插入到指定表中
要求查询出的数据和插入表的个数、类型一致
insert into table 表名 select 列名 from 表名;

2、DML语法之查询数据

大多关键词都学过,

将文件导入:

--创建表t_usa_covid19
drop table if exists t_usa_covid19;
CREATE TABLE t_usa_covid19(
    count_date string,
    county string,
    state string,
    fips int,
    cases int,
    deaths int)
row format delimited fields terminated by ",";

--将数据load加载到t_usa_covid19表对应的路径下
load data local inpath '/root/hivedata/us-covid19-counties.dat' into table t_usa_covid19;

--查询常数返回 此时返回的结果和表中字段无关
select 1 from t_usa_covid19;
--查询当前数据库
select current_database(); --省去from关键字
-- ALL 与 DISTINCT
--返回所有匹配的行
select state from t_usa_covid19;
--相当于
select all state from t_usa_covid19;  
-- all写不写效果一样

注意:where条件中不能使用聚合函数
报错 SemanticException:Not yet supported place for UDAF ‘sum’
聚合函数要使用它的前提是结果集已经确定。
而where子句还处于“确定”结果集的过程中,因而不能使用聚合函数

  • is null :为空

  • between 1 and 100 : 大于等于1,小于等于100

  • 聚合函数:多行数据,聚合成一行输出

  • where与having
    where 在分组前过滤;having在分组后过滤
    where后不能使用聚合函数,having后面可以使用聚合函数

  • 对表未知时,不要select * from 表 可能数据太大,最后加个limit输出几行

  • limit 2,3 :从第三行开始输出3行,默认第一行是0

  • 执行顺序:from – where-- group by --having --order by --limit --select

根据数据库的三范式设计要求和日常工作习惯来说,我们通常不会设计一张大表把所有类型的数据都放在一起,而是不同类型的数据设计不同的表存储.
所以后面设计连接多张表 —join

join常用的:inner join = join,left join

在这里插入图片描述
在这里插入图片描述

3、Hive 常用函数

  • show functions 查看所有可用的函数
  • describe function extended funcname 查看函数的使用方式
  • Hive的函数分为两大类:内置函数(Built-in Functions)、用户定义函数UDF(User-Defined Functions)
    内置函数可分为:数值类型函数、日期类型函数、字符串类型函数、集合函数、条件函数等;
    用户定义函数根据输入输出的行数可分为3类:UDF、UDAF、UDTF

用户定义函数UDF分类标准:根据函数输入输出的行数

  • UDF(User-Defined-Function)普通函数,一进一出
  • UDAF(User-Defined Aggregation Function)聚合函数,多进一出
  • UDTF(User-Defined Table-Generating Functions)表生成函数,一进多出

在这里插入图片描述

3.1 Hive 常用的内置函数

3.1.1 字符串函数

  • 字符串长度函数:length

  • 字符串反转函数:reverse

  • 字符串连接函数:concat

  • 带分隔符字符串连接函数:concat_ws
    concat_ws(拼接符,拼接内容)
    concat_ws(‘.’,‘www’,array(‘itca’,‘cn’)) 结果: www.itca.cn

  • 字符串截取函数:substr,substring
    select substr(‘angelababy’,-2) —输出:by
    select substr(‘angelababy’,2,2) —输出:ng
    select split(‘apache hive’,’ ‘) —输出:[‘apache’,‘hive’]
    select split(‘apache hive’,’ ‘)[0] —输出:apache
    select split(‘apache hive’,’ ')[1] —输出:hive

3.1.2 日期函数

--获取当前日期: current_date
select current_date();
--获取当前UNIX时间戳函数: unix_timestamp
select unix_timestamp();
--日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp("2011-12-07 13:01:03");
--指定格式日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss');
--UNIX时间戳转日期函数: from_unixtime
select from_unixtime(1618238391);
select from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');
  • 日期比较函数: datediff 日期格式要求’yyyy-MM-dd HH:mm:ss’ or ‘yyyy-MM-dd’
    select datediff(‘2012-12-08’,‘2012-05-09’);—输出相差多少天

  • 日期增加函数: date_add
    select date_add(‘2012-02-28’,10);

  • 日期减少函数: date_sub
    select date_sub(‘2012-01-1’,10);

3.1.3 数学函数

  • 随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数
    select rand();
  • 指定种子取随机数函数: rand(int seed) 得到一个稳定的随机数序列
    select rand(3);

3.1.4 条件函数

  • if(条件,条件满足输出内容,不满足输出)
  • CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
  • 空值转换函数: nvl(T value, T default_value)
    nvl(判断值,‘默认值’) --如果判断值非空输出本身,是空输出默认值

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

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

相关文章

LearnOpenGL-入门-7.变换

本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject LearnOpenGL中文官网:https://learnopengl-cn.github.io/ 文章目录变换向量单位向量向量点乘向…

Linux INPUT 子系统实验

目录 一、input 子系统简介 input_dev 结构体 二、驱动编写 1、宏定义 2、按键结构体和按键中断结构体 3、中断处理函数 4、定时器处理函数 5、注册input_dev 6、驱动出口 代码 验证 打印现象解析 1、input_event 结构体 2、打印解释 三、APP编写 ​ app代码如下 验…

【操作方法】windows开启、关闭防火墙方法

【操作方法】windows开启、关闭防火墙方法一、命令法1.启动或关闭Windows Default 防火墙2.选择启动或关闭二、鼠标点击法1.首先将查看类型选择为“类别”2.系统和安全3.Windows Defender 防火墙4.启动或关闭Windows Default 防火墙5.选择启动或关闭一、命令法 点击按键WinR打…

基于OBD系统的量产车评估测试(PVE)

在轻型汽车污染物排放限值及测量方法(中国第六阶段)中,除了对汽车尾气排放等制定了更为严格的限制之外,也在OBD系统认证项目中增加了新的要求——量产车评估(Production Vehicle Evaluation)测试。该测试由…

在码匠中使用 Microsoft SQL Server

目录 在码匠中集成 Microsoft SQL Server 在码匠中使用 Microsoft SQL Server 关于码匠 SQL Server 是 Microsoft 公司推出的关系型数据库管理系统。具有使用方便、可伸缩性好、与相关软件集成程度高等优点。Microsoft SQL Server 是一个功能全面的数据库平台,使…

Lecture1 Welcome Stanford CS229 Machine Learning|2018 Autumn|吴恩达机器学习

1:15:20目录机器学习类比跳棋游戏,理解机器学习的概念:很多人坐在电脑旁玩游戏或跳棋好几天,这就是经验E;任务T是指下跳棋的任务;性能度量P可能是指在与下一个对手下棋时/在下一场跳棋中获胜的机会是多少?监…

安装TDengine 服务端和客户端——客户端连不上问题解决

客户端连不上问题解决1. 下载安装服务端2. 下载安装客户端2.1 修改hosts文件2.2 修改客户端taos.cfg 文件安装中出现的问题问题解决1. 下载安装服务端 根据服务端系统不同 下载不同的安装包 ,按照参考网址:https://docs.tdengine.com/get-started/packa…

接口电子器件中的光耦合器模块

工业电子设备在电气噪声和机械挑战性的环境中运行。问题在于,自动化、控制和仪表组件依赖于没有电气干扰或失真的精确信号来正常运行。因此,光耦合器模块通常被工程师用作信号源以及电源、工业控制和其他组件之间的信号保护中介。 在工业应用中&#xf…

基于自定义训练函数的BP神经网络回归分析

目录 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的神经元 BP神经网络的激活函数 BP神经网络的传递函数 基于自定义训练函数的BP神经网络回归分析 背影 BP神经网络是一种成熟的神经网络,拥有很多训练函数,传递函数,激活函数&#x…

创建自助服务知识库的指南

在SaaS领域,自助文档是你可以在客户登录你的网站时为他们提供的最灵活的帮助方式,简单来说,一个自助知识库是一个可以帮助许多客户的文档,拥有出色的自助服务知识库,放在官网或者醒目的地方,借助自助服务知…

vue H5跳转小程序报错:config:fail,Error: 系统错误,错误码:63002,invalid signature

微信开发者工具下载地址与更新日志 错误码:63002,invalid signature 无效的签名 附录5 微信网页开发 /JS-SDK说明文档 微信 JS 接口签名校验工具 全局返回码说明 ​ 排查步骤 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sand…

【Python学习笔记】第二十二节 Python XML 解析

一、什么是XMLXML即ExtentsibleMarkup Language(可扩展标记语言),是用来定义其它语言的一种元语言。XML 被设计用来传输和存储数据。XML 是一套定义语义标记的规则,它没有标签集(tagset),也没有语法规则(grammatical rule)。任何XML文档对任何…

2023年金三银四必备软件测试常见面试题1500问!!!【Linux篇】

六、Linux6.1 Linux系统你是怎么用的?[在测试1、执行的过程中,我们发现的bug,有时候需要定位bug,协助开发修复bug时需要在linux里通过命令tail-200或tail-500查看当天的日志的后面多少行或者前面多少行定位bug或者通过tail -f来查看日志里的…

线程池阻塞问题

问题 记录一下生产环境出现的问题。。。 几天生产环境有同事反映分页查询一直在转圈查不出来数据,跟我反馈,我也是很积极的去看有什么问题,我以为就是比较常见的问题吧,当我看的时候觉得很奇怪。 有一个分页的接口其实有很多的…

LSB 题解

今天来刷一道Misc的题目,LSB原理进行图片隐写 LSB原理 LSB是一种利用人类视觉的局限性设计的幻术 PNG和BMP图片中的图像像素一般是由RGB(RED红 GREEN绿 BLUE蓝)三原色组成 记住,JPG图片是不适合使用LSB隐写的,JPG图片对像数进行了有损压缩…

Android逆向之旅—反编译利器Apktool使用教程

apktool下载软件首先下载apktool.bat和apktool.jar官网地址:https://ibotpeaches.github.io/Apktool/install/配置环境变量具体的apktool命令自行百度apktool 解包与打包解包: apktool d xxx.apk打包: apktool b xxx1.jadx安装与使用下载exe或…

C/C++开发,无可避免的内存管理(篇五)-c++与垃圾回收.水中捞月

一、垃圾回收机制 虽然智能指针帮助开展者简化了堆内存回收问题,但是它需要开发者显式声明,需要使用时判断等,还是不够便捷。而像java、Python、C#等开发语言直接支持垃圾回收机制。程序开发上,通常会将不再使用或没有任何指针指向…

译文《Learning to Drive in a Day》

摘要——我们展示了深度强化学习在自动驾驶中的首次应用。从随机初始化的参数中,我们的模型能够使用单个单眼图像作为输入,在少数训练集中学习车道跟随策略。我们提供一个通用且易于获得的奖励:车辆在没有安全驾驶员控制的情况下行驶的距离。…

numpy常用操作

文章目录1 numpy库2 数组对象 ndarray2.1 数组对象的创建2.1.1 利用array函数创建ndarray对象2.1.2 np.ones()和np.zeros()函数2.1.3 np.random.rand()函数2.1.4 np.arange()函数2.1.5 np.linspace()函数2.1.6 np.empty()函数2.2 ndarray对象常用属性2.3 ndarray常用操作2.3.1 …

SkyWalking简介和安装

APM系统 早期的监控系统功能比较单一,主要以监控CPU、内存、网络、I/O等基础设置为主(cacti、nagios) 后来随着中间件技术的不断发展,监控系统也开始监控缓存、数据库、MQ等各种基础组件的性能(zabbix、prommethus&a…