Hive基础和使用详解

news2024/11/20 13:30:38

文章目录

    • 1. hive的启动
    • 2. hive -help 命令
    • 3. hive -e 命令
    • 4. hive -f 命令
    • 5. 退出hive窗口
    • 6. 在hive窗口中执行dfs -ls /;
    • 7. Hive其他参考

1. hive的启动

前置条件:

1.保证hdfs和yarn已启动
2.保证hive的元数据库mysql已启动

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

启动方式一: hive命令

--切换到hive目录下的bin目录
 cd /opt/softs/hive3.1.2/bin/

--执行hive命令
hive

方式二:使用jdbc连接hive

(1)在hive目录下配置文件hive-site.xml

cd /opt/softs/hive3.1.2/conf/
ll
vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
  <!-- jdbc 连接的 URL -->
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://bigdata03:3306/hive?createDatabaseIfNotExist=true</value>
  </property>
  <!-- jdbc 连接的 Driver-->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <!-- jdbc 连接的 username-->
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  <!-- jdbc 连接的 password-->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>111111</value>
  </property>
   <!-- Hive 默认在 HDFS 的工作目录 -->
  <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
   </property>
   <!-- 指定 hiveserver2 连接的 host -->
  <property>
        <name>hive.server2.thrift.bind.host</name>
    <value>bigdata03</value>
  </property>
        <!-- 指定 hiveserver2 连接的端口号 -->
  <property>
        <name>hive.server2.thrift.port</name>
    <value>10000</value>
  </property>

  <property>
    <name>hive.server2.enable.doAs</name>
    <value>false</value>
  </property>

</configuration>

在这里插入图片描述

(2) 启动hiveserver2

-- 启动hiveserver2命令
hive --service hiveserver2

-- 注意:启动hiveserver2服务需要些时间才能启动完成,
且没有返回可输入命令行的界面,需要另开一个tab页面输入执行相关的命令指令

进阶的启动方式
(1)/opt/softs/hive3.1.2目录下创建1ogs目录
cd /opt/softs/hive3.1.2
mkdir logs

(2)执行如下命令
cd /opt/softs/hive3.1.2/bin/
nohup hive --service hiveserver2 1>/opt/softs/hive3.1.2/logs/hive.log 2>/opt/softs/hive3.1.2/logs/hive_err.log &
-- nohup:放在命令的开头,表示的意思为不挂起即关闭终端进程也保持允许状态
--1:代表标准日志输出
--2:表示错误日志输出
-- &:代表在后台运行
所以整个命令可以理解为:将hiveserver2服务后台运行在标准日志输出到hive.1og,错误日志输出到hive_err.log,唧使关闭终端(窗口),也会保持运行状态

(3)执行beeline命令

beeline -u jdbc:hive2://bigdata03:10000 -root

在这里插入图片描述

进阶:

在这里插入图片描述

注意:执行beeline命令时可能会报错,因为启动hiveserver2需要两三分钟时间,只有等hiveserver2启动完成后,可能用beeline命令完成jdbc连接。

Hive常用交互命令

2. hive -help 命令

 hive -help

在这里插入图片描述

3. hive -e 命令

hive -e "show databases"

不进入hive的交互窗口执行sql语句
在这里插入图片描述

4. hive -f 命令

执行文件中的sql语句

-- 创建文件
 cd /opt/file/
 touch hive_sql.txt
 vim hive_sql.txt

-- 添加sql语句命令“show databases”
show databases
cat hive_sql.txt

-- 将执行结果写入到新文件中
hive -f /opt/file/hive_sql.txt >/opt/file/query_result.txt
-- 查看执行结果
cat query_result.txt

在这里插入图片描述

5. 退出hive窗口

(1) exit;
(2) quit;

6. 在hive窗口中执行dfs -ls /;

在hive窗口中执行 dfs -ls /; 查看hdfs文件系统

在这里插入图片描述

7. Hive其他参考

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

create database if not exists bigdata;

在这里插入图片描述

在这里插入图片描述

show databases like "big*";

在这里插入图片描述

在这里插入图片描述

desc database extended bigdata;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

alter database bigdata set dbproperties('createtime'='20230423');

desc database extended bigdata;


在这里插入图片描述

同时也可以看到数据在hdfs上的存储路径(Location):

hdfs://bigdata03:8028/user/hive/warehouse/bigdata.db

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
hive详细的建表语句:

CREATE [EXTERNAL] TABLE [IF NOT EXIST] table_name
[(col_name data_type [COMMENT COL_COMMENT],.....)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment],....)]
[CLUSTERED BY (col_name,col_name,....)]
[SORTED BY (col_name [ASC|DESC],...)] INFO num_buckets BUCKETS]
[ROW FORMAT DELIMITED FIELDS TERMINATED BY ',']
[STORED AS file_format]
[LOCATION hdfs_path]

字段解释
1 CREATE TABLE创建一个指定名字的表,如果名字相同抛出异常,用户可以使用IF NOT EXIST来忽略异常

2 EXTERNAL关键字可以创建一个外部表,在建表的同时指定一个实际数据的路径(LOCATION)
,hive在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据

3 COMMENT是为表和列添加注释

4 PARTITIONED BY是分区表

5 CLUSTERED BY 是建分桶(不常用)

6 SORTED BY 是指定字段进行排序(不常用)

7 ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 是指每行数据中列分隔符为"," 
默认分隔符为" \001"

8 STORED AS 指定存储文件类型,数据文件是纯文本,可以使用STORED AS TEXTFILE

9 LOCATION 指定表在HDFS上的存储位置,内部表不要指定,
但是如果定义的是外部表,则需要直接指定一个路径。

对sale_detail 中的数据:

1,小明,男,iphone14,5999,1
2,小华,男,飞天茅台,2338,2
3,小红,女,兰蔻小黑瓶精华,1080,1
4,小魏,未知,米家走步机,1499,1
5,小华,男,长城红酒,158,10
6,小红,女,珀莱雅面膜,79,2
7,小华,男,珠江啤酒,11,3
8,小明,男,Apple Watch 8,2999,1

创建hive内部表:

CREATE TABLE IF NOT EXISTS bigdata.ods_sale_detail
( 
  sale_id    INT      COMMENT  "销售id"
 ,user_name  STRING   COMMENT  "用户姓名"
 ,user_sex   STRING   COMMENT  "用户性别"
 ,goods_name STRING   COMMENT  "商品名称"
 ,prcie      INT      COMMENT  "单价"
 ,sale_count INT      COMMENT  "销售数量"
)
COMMENT "销售内部表"
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
STORED AS TEXTFILE;

在这里插入图片描述
查看建表结果

在这里插入图片描述

创建hive外部表:

CREATE EXTERNAL TABLE IF NOT EXISTS bigdata.ods_sale_detail_external
( 
  sale_id    INT      COMMENT  "销售id"
 ,user_name  STRING   COMMENT  "用户姓名"
 ,user_sex   STRING   COMMENT  "用户性别"
 ,goods_name STRING   COMMENT  "商品名称"
 ,price      INT      COMMENT  "单价"
 ,sale_count INT      COMMENT  "销售数量"
)
COMMENT "销售外部表"
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
STORED AS TEXTFILE
LOCATION "/bigdata/hive/external_table/ods/ods_sale_detail_external";

在这里插入图片描述

在这里插入图片描述

在虚拟机bigdata03的 /opt/file目录下创建 sale_detail.txt 文件, 添加:

1,小明,男,iphone14,5999,1
2,小华,男,飞天茅台,2338,2
3,小红,女,兰蔻小黑瓶精华,1080,1
4,小魏,未知,米家走步机,1499,1
5,小华,男,长城红酒,158,10
6,小红,女,珀莱雅面膜,79,2
7,小华,男,珠江啤酒,11,3
8,小明,男,Apple Watch 8,2999,1

在这里插入图片描述

-- load data [local] inpath '数据的 path' [overwrite] into table dbname.tablename [partition (partcol1=val1,…)];

-- 不含overwrite,多次执行装载Load会不去重
load data local inpath '/opt/file/sale_detail.txt' into table bigdata.ods_sale_detail;


Load命令 不含overwrite,多次执行装载Load会不去重

在这里插入图片描述

再次执行Load命令:

在这里插入图片描述
再次查看数据表,会发现数据会再次追加,不会去重

在这里插入图片描述

Load命令 添加overwrite,多次执行装载Load会去重

load data local inpath '/opt/file/sale_detail.txt' overwrite into table bigdata.ods_sale_detail;

在这里插入图片描述

利用含数据的txt文件,添加数据到外部表中:

hadoop fs -put /opt/file/sale_detail.txt /bigdata/hive/external_table/ods/ods_sale_detail_external

在这里插入图片描述

命令行界面查询外部表数据:

在这里插入图片描述

查看建表信息:

在这里插入图片描述

可以发现表bigdata.ods_sale_detail的存储路径等信息

LOCATION
| ‘hdfs://bigdata03:8020/user/hive/warehouse/bigdata.db/ods_sale_detail’ |

删除内部表ods_sale_detail:

在这里插入图片描述

drop table bigdata.ods_sale_detail;

删除后查看该内部表是否还存在:

hadoop fs -ls /user/hive/warehouse/bigdata.db/ods_sale_detail

删除成功(表和数据一起删除):

在这里插入图片描述

删除外部表:

drop table bigdata.ods_sale_detail_external;

在这里插入图片描述

删除外部表后,只删表结构,不能在命令行界面查询
在这里插入图片描述
但外部文件还在,数据依旧保留
在这里插入图片描述

当再次创建hive外部表时:

CREATE EXTERNAL TABLE IF NOT EXISTS bigdata.ods_sale_detail_external
( 
  sale_id    INT      COMMENT  "销售id"
 ,user_name  STRING   COMMENT  "用户姓名"
 ,user_sex   STRING   COMMENT  "用户性别"
 ,goods_name STRING   COMMENT  "商品名称"
 ,price      INT      COMMENT  "单价"
 ,sale_count INT      COMMENT  "销售数量"
)
COMMENT "销售外部表"
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
STORED AS TEXTFILE
LOCATION "/bigdata/hive/external_table/ods/ods_sale_detail_external";

在这里插入图片描述

依然可以在命令行界面查询数据:

select * from bigdata.ods_sale_detail_external;

在这里插入图片描述

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

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

相关文章

基础自动化测试脚本开发——Loadrunner如何进行网站脚本开发

一、检查虚拟机ip是否与宿主机ip网段一样 若发现虚拟机IP地址网段与宿主机IP地址不一致时&#xff0c;应在手动改为宿主机IP网段的静态IP地址。 在dos系统下利用ping命令来判断网页的连通性&#xff0c;若连通性不通过&#xff0c;则重新修改分配该虚拟机静态IP地址&#xff08…

二分查找学习总结心得

二分查找一般运用在有序数组中的查找&#xff0c;一般分为开区间、闭区间和半开半闭区间三种写法 闭区间 闭区间是指包含左右两边元素的区间&#xff0c;例如&#xff1a;区间[a, b]包含元素 a b ,称为闭区间。 代码1 # 左闭右闭 区间写法 在数组 nums 中寻找 target def …

LVS负载均衡集群——NAT部署

一、企业群集应用概述 1、群集的含义 • Cluster、集群、群集 • 由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供一个访问入口(域名或IP地址)&#xff0c;相当于一台大型计算机 2、问题及解决方法 问题&#xff1a; 互联网应用中&#xff0c;随着站…

说说Java日志那些事

日志是每个应用程序在开发的过程中必不可少的组件&#xff0c;通过日志输出可以获取项目的一些运行信息&#xff0c;监控项目的运行指标等&#xff0c;同时&#xff0c;通过学习Java日志框架还可以学习到桥接器与适配器模式等。 日志框架 log4j &#xff08;日志实现&#xf…

上线控制台,降低使用门槛|Higress 1.0.0 RC 版本发布

作者&#xff1a;澄潭 前言 历时 5 个多月&#xff0c;Higress 推出了首个 RC &#xff08;Release Candidate&#xff0c;即正式发布的候选&#xff09;版本 1.0.0-rc&#xff0c;用户可以通过控制台&#xff0c;开箱即用地使用云原生网关。 选用 Higress 作为云原生网关的…

探究GPU同时做渲染与通用计算的并行性

在10年前&#xff0c;随着CUDA与OpenCL的纷纷出炉&#xff0c;GPGPU也着实热了一把。而现今&#xff0c;不少公司更是将GPGPU作为挖矿、搞机器学习的计算利器。于是乎&#xff0c;有许多言论声称GPU将很快取代CPU&#xff01;那么现代化的GPGPU是否具有如此强大的威力甚至于能取…

sql注入知识---时间盲注

MySQL手注之时间盲注详解 时间盲注原理&#xff1a;注意&#xff1a;基于时间盲注sleep函数函数用法&#xff1a;例子&#xff1a;观察以下语句 基于时间盲注if函数函数用法&#xff1a; 基本步骤&#xff1a;基于时间的盲注案例&#xff08;sqli-lab less-9&#xff09;枚举当…

【Vue】学习笔记-组件化编程

学习笔记-组件化编程 模块与组件、模块化与组件化非单文件组件基本使用组件注意事项组件的嵌套VueComponent一个重要的内置关系 单文件组件 模块与组件、模块化与组件化 模块 a.理解&#xff1a;向外提供特定功能的js程序&#xff0c;一般就是一个js文件 b.为什么&#xff1a;j…

实验8---SpringMVC基础

实验八 SpringMVC基础 一、实验目的及任务 通过该实验&#xff0c;掌握SpringMVC框架搭建步骤&#xff0c;掌握SpringMVC控制器的编写方法以及与spring依赖注入结合方法。 二、实验环境及条件 主机操作系统为Win10&#xff0c;Tomcat,j2sdk1.6或以上版本。 三、实验实施…

使用Linux运维常识

一.基础操作 1.终端常用快捷键 快捷键描述ctrl键盘左键向左跳一个单词ctrl键盘右键向右跳一个单词Ctrl c停止当前正在运行的命令。Ctrl z将当前正在运行的命令放入后台并暂停它的进程。Ctrl d关闭当前终端会话。Ctrl l清屏&#xff0c;也可以用clear命令实现Tab自动补全当…

倾斜摄影超大场景的三维模型转换3DTILES格式有哪些好处?

倾斜摄影超大场景的三维模型转换3DTILES格式有哪些好处&#xff1f; 倾斜摄影超大场景的三维模型转换到3D Tiles格式有以下几个好处&#xff1a; 1、数据存储效率高&#xff1a;3D Tiles是一种高效的地理数据存储格式&#xff0c;能够将大规模的倾斜摄影三维模型数据分块存储…

Hive312的计算引擎由MapReduce(默认)改为Spark(亲测有效)

一、Hive引擎包括&#xff1a;默认MR、tez、spark 在低版本的hive中&#xff0c;只有两种计算引擎mr, tez 在高版本的hive中&#xff0c;有三种计算引擎mr, spark, tez 二、Hive on Spark和Spark on Hive的区别 Hive on Spark&#xff1a;Hive既存储元数据又负责SQL的解析&…

【Linux】生产者消费者模型——环形队列RingQueue(信号量)

文章目录 铺垫信号量信号量概念信号量PV操作信号量基本接口 环形队列的生产消费模型引入环形队列访问环形队列代码实现代码改造多生产者多消费者代码 总结 铺垫 之前写的代码是存在不足的地方的&#xff1a; 我们使用线程操作临界资源的时候要先去判断临界资源是否满足条件&am…

QoS部署

1.总部和分部之间视频出现花屏,语音图像不同步的现象是有哪些原因导致的? 如图所示总部和分部之间的流量有FTP数据流量、视频流量和语音流量。如果在总部和分部之间的这几类流量没有做QoS部分或者优先级的区分,那么这些流量基于默认的无差别的流量策略去竞争带宽,如果FTP数…

暴躁兔分享:火爆圈子的XEN,我们如何吃到一波红利的

这周沉闷的熊市突然冲出一个XEN项目。 在这个项目上我们经历了拿到消息&#xff0c;看不懂不做&#xff0c;获取新的信息&#xff0c;发现可以搞&#xff0c;冲的这么一个过程。虽然由于信息查和认知差没有吃到最早拿到信息那波的利润&#xff0c;但是通过分析也跟着喝了一点汤…

网页源代码检查时隐藏 WebSocket 的后端地址

背景 近期在自研如何通过 OpenAI 实现 与ChatGPT 官网一样的聊天对话效果。 用到了 html5websocketpython 三项技术 , 于是用一天时间自学了一下这方面技术。 当实现了功能之后&#xff0c;就得考虑安全问题&#xff1a; 在用 html5 实现与 websocket 通讯时&#xff0c;如何保…

管理后台项目-05-SKU列表-上下架-详情抽屉效果-深度选择器

目录 1-SKU列表 2-SKU上下架 3-SKU详情 1-SKU列表 当用户点击Sku管理&#xff0c;组件挂载的时候&#xff0c;我们需要获取sku列表信息&#xff1b;但是获取列表方法在分页列表改变页码和每页显示大小的时候也需要触发&#xff0c;我们封装为一个方法。 //sku列表的接口 /adm…

Elasticsearch聚合、自动补全 | 黑马旅游

一、数据聚合 1、聚合的分类 聚合&#xff08;aggregations&#xff09;可以实现对文档数据的统计、分析、运算。 聚合常见有三类&#xff1a; 桶聚合 Bucket&#xff1a;对文档数据分组&#xff0c;并统计每组数量 TermAggregation&#xff1a;按照文档字段值分组&#xf…

中国电子学会2023年03月青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)

中国电子学会2023年03月青少年软件编程Scratch图形化等级考试试卷二级 1.小猫的程序如图所示&#xff0c;积木块的颜色与球的颜色一致。点击绿旗执行程序后&#xff0c;下列说法正确的是&#xff1f;&#xff08;C&#xff09;&#xff08;2分&#xff09; A.小猫一直在左右移…

JDBC详解(二):获取数据库连接(超详解)

JDBC详解&#xff08;二&#xff09;&#xff1a;获取数据库连接 前言一、要素一&#xff1a;Driver接口实现类1、Driver接口介绍2、加载与注册JDBC驱动 二、要素二&#xff1a;URL三、要素三&#xff1a;用户名和密码四、数据库连接方式举例4.1 连接方式一4.2 连接方式二4.3 连…