Hive的常规操作

news2024/11/25 11:28:56

Hive常规操作

hive常用交互命令

-e执行sql语句

[root@master ~]# hive -e "show databases";

-f执行sql脚本

[root@master ~]# hive -f /usr/local/demo.sql

查看hive中输入的所有命令

[root@master ~]# cat ~/.hivehistory

操作库

创建库

语法:

create dtabase 库名称;

案例:

hive> create database demo;

查看库

查看所有数据库
hive> show databases;
查看数据库信息

语法:

desc database 库名称;

案例:

hive> desc database demo;
查看数据库详细信息

语法:

desc database extended 库名称

案例:

hive> desc database extended demo;

使用库

语法:

use 库名称;

案例:

hive> use demo;

修改库

语法:

alter database 库名称 set dbproperties( )

使用alter database命令为某个数据库的dbproperties设置键-值对属性值,用于描述数据库的属性信息,数据库的其他数据信息无法更改,包括数据库所在目录地址

案例:

hive> alter database demo set dbproperties('createtime'='20220620');

删除库

删除空数据库

语法:

drop database 库名称;

案例:

hive> drop database demo;
删除存在的数据库

语法:

drop databse if exists 库名称

案例:

hive> drop database if exists demo;
删除不为空的数据库

语法:

drop database 库名称 cascade

案例:

hive> drop database demo cascade;

操作表

创建表

语法:

create [external] table [if not exists] table_name
(col_name data_type [comment col_commment],....)
[commetn table_comment]
[partitioned by (col_name data_type [comment col_commnet,]...)]
[cloustered by (col_name,col_name)]
[sorted by (col_name [asc|desc]....)into num_buckets buckets] 
[stored as fire_format]
[location hdfs_path]
[like]
  • create table :
    • 创建一个指定名称的表,如果相同名称的表存在,则抛出异常,用于可以使用if not exists选项忽略这个异常
  • external:
    • 关键字创建一个外部表,在建表的同时指定一个指向实际数据的路径location,hive创建内部表时,会将数据移动到数据仓库指向的路径;如果创建外部表,仅记录数据所在的路径,不会对数据的位置做任何改变,在删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
  • commnet:
    • 为表和列添加注释
  • partitioned by
    • 创建分区表
  • cloustered by
    • 创建分桶表
  • sorted by
    • 桶内排序
  • stored as
    • 指定存储文件类型,常见的类型有二进制文件(sequencefile),文本(textfile),列式存储格式文件(rcfile),如果文本数据是纯文本,可以使用stored as textfile。如果需要压缩存储,可以使用stored as sequencefile。
  • location
    • 指定表在hdfs上的存储位置
  • like
    • 允许用户复制现有的表结构,但不是复制数据
基本数据类型
数据类型描述
BOOLEAN逻辑布尔值(TRUE/FALSE)
TINYINT一个字节有符号整数,范围为-128到127
SMALLINT两个字节有符号整数,范围为-32768到32767
INT四个字节有符号整数,范围为-2147483648到2147483647
BIGINT八个字节有符号整数,范围为-9223372036854775808到9223372036854775807
FLOAT单精度浮点数,范围为-3.4028235E38到3.4028235E38
DOUBLE双精度浮点数,范围为-1.7976931348623157E308到1.7976931348623157E308
STRING字符串类型
VARCHAR可变长度字符串类型
CHAR定长字符串类型
DATE日期类型,格式为YYYY-MM-DD
TIMESTAMP时间戳类型,以秒为单位存储时间戳
BINARY二进制数据类型
ARRAY数组类型,用于存储一组相同类型的元素
MAP映射类型,用于存储键值对
STRUCT结构体类型,用于存储不同类型的字段组成的记录
UNIONTYPE联合类型,用于表示多个可能的数据类型
创建普通表
hive (demo)> create table if not exists student(
		   > id int,
		   > name varchar(20)
		   > calss string
		   > );

VARCHARSTRING都是用来表示字符串类型的数据。

  • VARCHAR是可变长度字符串类型,

  • STRING是固定长度字符串类型。

创建分区表
hive (demo)> create table if not exists demo_tab_01(colume01 string)
           > partitioned by (colume02 string)
           > row format delimited
           > fields terminated by '\t';
  • create table if not exists demo_tab_01(column01 string): 创建了一个名为demo_tab_01的表,其中包含一个名为column01的列,数据类型为STRINGIF NOT EXISTS语句用于确保在表不存在时才创建该表,避免了重复创建表的情况。
  • partitioned by (column02 string): 指定了表的分区方式。它表示根据名为column02的列进行分区,该列的数据类型为STRING。分区可以帮助提高查询性能,并且可以更有效地管理数据。
  • row format delimited: 指定了数据的行格式为分隔符格式。这意味着Hive将使用特定的分隔符来识别和分隔每行中的字段数据。
  • fields terminated by '\t': 指定了字段之间的分隔符。在这种情况下,字段之间的分隔符是制表符\t,表示字段之间使用制表符进行分隔。
创建外部表
hive (demo)> create external table if not exists demo_tab_02(id int,name string)
           > row format delimited fields terminated by '\t';
  • create external table if not exists demo_tab_02(id int, name string): 创建了一个名为demo_tab_02的外部表,其中包含两列,分别是idname,分别的数据类型分别是整数类型和字符串类型。
  • row format delimited fields terminated by '\t': 指定了数据的行格式为分隔符格式,字段之间的分隔符是制表符\t。这意味着Hive将使用制表符来识别和分隔每行中的字段数据。
删除数据表

语法:

drop table 表名称;

案例:

hive (demo)> drop table student;

修改表

修改内部表为外部表

语法:

alter table 表名称 set tblproperties('external'='true/false')

使用SET TBLPROPERTIES子句来设置表的属性,将其标记为外部表。

external是一个特殊的表属性,用于指示表是否为外部表

案例:

hive (demo)> alter table demo_tab_01 set tblproperties('external'='true');
修改外部表为内部表

语法:

alter table 表名称 set tblproperties('external'='true/false')

案例:

hive (demo)> alter table demo_tab_01 set tblproperties('exterual'='false');
重命名表

语法:

alter table 旧表名称 rename to 新名称;

案例:

hive (demo)> alter table demo_tab_01 rename to demo_new_01;
添加字段信息

语法:

alter table 表名称 add columns(字段 数据类型);

案例:

hive (demo)> alter table demo_tab_02 add columns(age int);
修改字段信息

语法:

alter table 表名称 change column 旧字段 新字段 数据类型;

案例:

hive (demo)> alter table demo_tab_02 change column id new_id string;
替换列

语法:

alter table 表名称 replace columns(字段 数据类型);

案例:

不会修改存储在hdfs中的数据,只是修改元数据的列而已。如果hdfs存储的是string,如果列replace列为int,则查不到对于的数据。

hive (demo)> alter table demo_tab_02 replace columns(age int);

删除表

删除表

语法:

drop table 表名称;

案例:

hive (demo)> drop table demo_new_01;
清空表

语法:

truncate table 表名称;

案例:

只能清空管理表,不能清除外部表

hive (demo)> truncate table demo_new_01;

分区表

概念

分表实际上是对于一个HDFS文件系统上的独立文件,该文件夹是该分区所有的数据文件。hive中的分区就是分目录,把一个大的数据集切割成多个小的数据集,在查询是可以通过where选定指定的分区查询对应的数据

操作
创建分区表
hive (demo)> create table if not exists demo_tab_01(colume01 string)
           > partitioned by (colume02 string)
           > row format delimited
           > fields terminated by '\t';
查看分区信息
hive (demo)> show partitions demo_tab_01;
查看分区表结构
hive (demo)> desc formatted demo_tab_01;
查看分区数据
hive (demo)> select * from demo_tab_01;
hive (demo)> select * from demo_tab_01 where colume01 = 1;
增加单个分区
hive (demo)> alter table demo_tab_01 add partition (colume01 = 'yyyy');
添加多个分区
hive (demo)> alter table demo_tab_01 add partition (colume01 = 'yyyy') partition (colume01 = 'xxxx') partition (colume01 = 'nnnn');
删除单个分区
hive (demo)> alter table demo_tab_01 drop partition (colume01 = 'yyyy');
删除多个分区
hive (demo)>alter table demo_tab_01 drop partition (colume01 = 'yyyy') partition (colume01 = 'xxxx') partition (colume01 = 'nnnn');

操作数据

通过insert语句向表中插入数据

insert into table 表名称 [partition] values(数据)

案例

hive (demo)> insert into table student1 values (1,'zhangsan','hadoop');
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Query ID = root_20240604084248_e1532893-2e9d-407f-8490-fcd1c11e3cda
Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1717461478463_0001, Tracking URL = http://master:8088/proxy/application_1717461478463_0001/
Kill Command = /usr/local/hadoop-3.3.1/bin/hadoop job  -kill job_1717461478463_0001
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2024-06-04 08:43:05,784 Stage-1 map = 0%,  reduce = 0%
2024-06-04 08:43:16,233 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.82 sec
MapReduce Total cumulative CPU time: 1 seconds 820 msec
Ended Job = job_1717461478463_0001
Stage-4 is selected by condition resolver.
Stage-3 is filtered out by condition resolver.
Stage-5 is filtered out by condition resolver.
Moving data to directory hdfs://master:8020/user/hive/warehouse/demo1.db/student1/.hive-staging_hive_2024-06-04_08-42-48_863_8941965166612581309-1/-ext-10000
Loading data to table demo1.student1
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1   Cumulative CPU: 1.82 sec   HDFS Read: 4634 HDFS Write: 88 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 820 msec
OK
_col0   _col1   _col2
Time taken: 29.486 seconds

分析执行日志

警告信息

WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

这是一个警告信息,提醒用户Hive-on-MR(Hive on MapReduce)在Hive 2中已经被弃用,并可能在将来的版本中不再可用。建议使用不同的执行引擎(例如Spark、Tez)或者使用Hive 1.X版本。

查询信息

Query ID = root_20240604084248_e1532893-2e9d-407f-8490-fcd1c11e3cda
Total jobs = 3

这是查询的ID以及该查询涉及的总作业数量。

启动作业

Launching Job 1 out of 3

此时开始启动作业,这是三个作业中的第一个。

作业进度信息

Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1717461478463_0001, Tracking URL = http://master:8088/proxy/application_1717461478463_0001/

由于没有Reduce操作,所以减少任务的数量设置为0。然后开始作业,并提供作业的跟踪URL。

作业运行信息

Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0

这是作业运行的信息,第一个阶段(Stage-1)有一个Mapper任务,没有Reducer任务。

作业执行进度

2024-06-04 08:43:05,784 Stage-1 map = 0%,  reduce = 0%
2024-06-04 08:43:16,233 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.82 sec

提供了作业的执行进度,显示了Mapper任务的完成情况。

作业结束信息

Ended Job = job_1717461478463_0001

作业执行结束。

数据移动和加载信息

Moving data to directory hdfs://master:8020/user/hive/warehouse/demo1.db/student1/.hive-staging_hive_2024-06-04_08-42-48_863_8941965166612581309-1/-ext-10000
Loading data to table demo1.student1

数据正在被移动到HDFS(Hadoop分布式文件系统)的特定目录,并加载到名为demo1.student1的Hive表中。HDFS通常使用8020端口进行通信,所以hdfs://master:8020/表示数据将被写入到HDFS的master节点,并通过8020端口进行通信

MapReduce任务启动信息

MapReduce Jobs Launched:
Stage-Stage-1: Map: 1   Cumulative CPU: 1.82 sec   HDFS Read: 4634 HDFS Write: 88 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 820 msec

显示了启动的MapReduce任务的情况,包括Mapper的数量、累计CPU时间以及HDFS读写情况。

查询结果

OK
_col0   _col1   _col2
Time taken: 29.486 seconds

插入操作的结果,包括表的字段以及操作所花费的时间。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以看到刚刚的插入语句使用slave02节点执行的

向表中导入数据

load data [local] inpath '路径' [overwirte] into table 表名称 [partition](partcol1=value1.....)]


  • load data:
    • 表示加载数据
  • local:
    • 表示从本地中加载数据到hive表;否则从hdfs中加载数据到hive表
  • inpath:
    • 表示数据的路径
  • overwirte:
    • 表示覆盖表中已有的数据,负责表示追加数据
  • into table:
    • 表示加载到哪张表
  • 表名称:
    • 表示具体操作的哪张表
  • partition:
    • 表示上传到指定的分区中

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

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

相关文章

kafka-集群-主题创建

文章目录 1、集群主题创建1.1、查看 efak1.2、创建 主题 my_topic1 并建立6个分区并给每个分区建立3个副本1.2.1、查看 my_topic1 的详细信息 1.3、停止 kafka-01实例,端口号为 9095 1、集群主题创建 1.1、查看 efak 已经有三个kafka实例 1.2、创建 主题 my_topic1…

数据分析中的统计学基础及Python具体实现【数据分析】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

Java项目如何外发告警日志到企业微信

前言 最近领导交代了一个需求,就是有些许客户不单单满足平台告警日志外发到邮箱、短信的形式,还要以消息聊天的形式外发给企业微信。 具体操作 1、注册企业微信。 2、登录企业微信,找到应用管理,创建应用。 3、创建完之后需要记录以下图片中两个值的信息。 4、然后记录下…

什么是MES系统?有什么作用?

MES系统解决方案是专门针对制造企业设计,在MES系统的应用下,实现专业的工厂、车间生产信息化管理方案,帮助制造企业提高生产效率。针对目前制造行业的生产管理状况,以及提升企业生产效率和企业竞争力的需求,实施MES系统…

SpringCloud Hystrix服务熔断实例总结

SpringCloud Hystrix断路器-服务熔断与降级和HystrixDashboard SpringCloud Hystrix服务降级实例总结 本文采用版本为Hoxton.SR1系列&#xff0c;SpringBoot为2.2.2.RELEASE <dependency><groupId>org.springframework.cloud</groupId><artifactId>s…

Java Web学习笔记14——BOM对象

BOM&#xff1a; 概念&#xff1a;浏览器对象模型&#xff08;Browser Object Model&#xff09;&#xff0c;允许JavaScript与浏览器对话&#xff0c;JavaScript将浏览器的各个组成部分封装为对象。 组成&#xff1a; Window&#xff1a;浏览器窗口对象 介绍&#xff1a;浏览…

Android Graphics 显示系统 - Android Jank detection with FrameTimeline

“ 最近有公司同事在处理UI卡顿及FPS自动化监测的问题&#xff0c;我也顺便看了一点相关的内容&#xff0c;其中在Perfetto的官方说明文档中有一篇关于利用FrameTimeLine进行Jank监测的解读&#xff0c;个人觉得蛮有意思的&#xff0c;借助工具翻译该篇文章并加上本人拙劣的解读…

Java 数据库连接(JDBC)的使用,包括连接数据库、执行SQL语句等

一、简介 Java Database Connectivity&#xff08;JDBC&#xff09;是Java应用程序与关系数据库进行交互的一种API。它提供了一组用于访问和操作数据库的标准接口&#xff0c;使开发人员能够使用Java代码执行数据库操作&#xff0c;如查询、插入、更新和删除等。 二、JDBC架构…

红酒保存中的软木塞与瓶身保护

云仓酒庄雷盛红酒&#xff0c;以其卓着的品质和精美的包装赢得了众多消费者的喜爱。在红酒的保存过程中&#xff0c;软木塞与瓶身保护是至关重要的环节。本文将深入探讨这两方面的问题&#xff0c;以帮助消费者更好地理解和欣赏云仓酒庄雷盛红酒。 首先&#xff0c;我们来谈谈软…

关于调用百度AI开放平台短文本在线合成API接口 Open api characters limit reached 问题

官方示例代码中心&#xff1a; https://console.bce.baidu.com/support/?_1668482508529#/api?productAI&project语音技术&parent语音合成&apitext2audio&methodpost 一、调试时&#xff0c;若提示 16: Open api characters limit reached&#xff08;{"…

《维汉翻译通》App全新升级:维吾尔语短文本翻译、汉语拼音标注、维语词典、谚语格言名句等功能统统免费!还支持维吾尔文OCR识别提取文字!

2024年《维汉翻译通》App迎来重大更新&#xff01;这次升级不仅带来了全新的功能&#xff0c;还为所有用户提供了更加便捷的服务体验。以下是我们新版本的主要亮点&#xff1a; 维语短文本翻译免费啦&#xff01; 我们深知语言是沟通的桥梁&#xff0c;为了让更多人能够跨越语…

Python 短文本匹配,短文本语义相似度,基于大模型的短文本匹配,基于LLMs的短文本语义相似度识别,短文本语义扩充和匹配

1.任务描述 之前在做疾病相似度匹配的时候&#xff0c;堪称史诗级难题&#xff0c;虽然最后加上规则以及一些nlp模型&#xff0c;取得了差强人意的效果&#xff0c;但是短文本的语义相似度匹配一直属于比较难以攻克的难题 2.思路 随着近年大模型的飞速发展&#xff0c;就之前…

七天进阶elasticsearch[two]

批量保存 批量保存是通过_bulk API来实现的 请求方式 post 请求地址 _bulk 通过_bulk操作文档,一般至少有两行参数 第一行用于确定要干什么(插入,修改还是删除) 第二行才是操作的数据; 当然以上是标准操作,也可以不遵循标准操作,使用不同的请求方式来完成 批量保存demo…

基于 MediaPipe 的 2D 和 3D 的人体姿态追踪:Rerun 展示

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 概述 我们探讨一个使用 MediaPipe 在 2D 和 3D 中追踪人体姿态的用例。使这次探索更加有趣的是通过开源可视化工具 Rerun 提供的可视化功能&#xff0c;可以全方位展示人体姿态的动态。在这篇博文中&#xff0c;您将学习…

知识图谱的应用---智慧政务

文章目录 智慧政务典型应用 智慧政务 智慧政务即通过“互联网政务服务”构建智慧型政府&#xff0c;利用云计算、移动物联网、人工智能、数据挖掘、知识管理等技术&#xff0c;提高政府在办公、监管、服务、决策中的智能水平&#xff0c;形成高效、敏捷、公开、便民的新型政府&…

静态IP地址:多元化场景下的稳定连接解决方案

当考虑静态IP地址的适用场景时&#xff0c;我们可以从以下几个板块进行细分和归纳&#xff1a; 一、服务器托管与网络服务 1. 服务器托管 稳定性&#xff1a;静态IP确保服务器能够持续、稳定地接入互联网&#xff0c;减少因IP地址更新带来的服务中断风险。 可访问性&am…

java:reactor的Mono和Reactor的简单例子

【pom.xml】 <dependency><groupId>io.projectreactor</groupId><artifactId>reactor-core</artifactId><version>3.3.17.RELEASE</version> </dependency>【MyReactorTest2.java】 package com.chz.myReactor;import react…

基于 Delphi 的前后端分离:之三,使用 HTMX

# 前请提要 基于 Delphi 的前后端分离&#xff1a;之一_delphi 后台vue-CSDN博客 基于 Delphi 的前后端分离&#xff1a;之二_后端 框架 delphi-CSDN博客 # 发现一个非常好的前端框架 - HTMX 这里仍然使用之二里面提到的页面模板&#xff0c;但采用 HTMX 来和后端交互&#…

Redis持久化说明

Redis的持久化是指将内存中的数据持久化到磁盘中&#xff0c;以保证数据在重启或宕机后不会丢失。 Redis提供了两种主要的持久化方式&#xff1a;RDB(Redis DataBase)和AOF(Append Only File)。 RDB&#xff08;Redis DataBase&#xff09; 1、RDB快照原理 RDB持久化方式会定…

Django分页

1、在视图函数文件中引入‘分页器’ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 2、给原来的罗列信息函数&#xff0c;添加分页功能&#xff0c;即按照页码&#xff0c;只返回部分信息。 login_required def article_list(request):article…