大数据复习笔记——hive

2023-11-20

这次主要讲解一下平常使用较多的数据仓库hive

一、Hive

1、Hive的介绍

hive提供了HiveQL方言来查询存储在hadoop集群中的数据。hive可以将大多数的查询转换为MapReduce作业。
hive最适合于数据仓库,使用数据仓库进行相关的静态数据分析,而不需要快速响应给出结果,而且数据本身不会频繁变化。

数据仓库
数据仓库是信息(对其进行分析可做出更明智的决策)的中央存储库。通常,数据定期从事务系统、关系数据库和其他来源流入数据仓库。业务分析师、数据科学家和决策者通过商业智能 (BI) 工具、SQL 客户端和其他分析应用程序访问数据。

2、Hive的搭建模式

a)内嵌Derby模式

使用内嵌的默认元数据数据库Derby,单进程访问。

注:使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示错误

b)Local方式

使用其他的关系型数据库,该关系型数据库和hive在同一个节点。(例如mysql)

这里需要注意下mysql的权限应与hive的权限一致

c)Remote方式

使用其他的关系型数据库,该关系型数据库和hive不在同一个节点。

3、Hive的数据库和表操作

数据库操作

a)创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, …)];

hive> create database mydb1 comment 'my db two' location '/user/hive/mymydbdb2' with dbproperties ('key1'='value1', 'key2' = 'value2');
OK
Time taken: 0.077 seconds

b)删除数据库

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
restrict: 确保只有不存在相关视图和 完整性约束的表才能删除
cascade: 任何相关视图和完整性约束一并被删除
默认使用cascade

hive> drop database if exists mydb1;
OK
Time taken: 0.011 seconds

c)修改数据库

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, …);
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;

hive> desc database extended mydb1;
OK
mydb1	my db one	hdfs://mycluster/user/hive/mydb1	root	USER	
Time taken: 0.045 seconds, Fetched: 1 row(s)
hive> alter database mydb1 set dbproperties('key1'='value1','key2'='value2');
OK
Time taken: 0.051 seconds
hive> desc database extended mydb1;
OK
mydb1	my db one	hdfs://mycluster/user/hive/mydb1	root	USER	{key1=value1, key2=value2}
Time taken: 0.035 seconds, Fetched: 1 row(s)

d)使用数据库

USE database_name;
USE DEFAULT;

建表操作
示例

hive> create table tb_user5 (id int, name string, age int, likes array<string>, addrs map<string, string>) row format delimited fields terminated by ',' collection items terminated by '-' map keys terminated by ':' lines terminated by '\n' stored as SEQUENCEFILE location '/user/hive/u5';
OK
Time taken: 0.096 seconds

分区表(为了加快搜索)
a、单分区建表语句:
① create table day_table (id int, content string) partitioned by (dt string);
② 单分区表,按天分区,在表结构中存在id,content,dt三列。
③ 以dt为文件夹区分
b、 双分区建表语句:
① create table day_hour_table (id int, content string) partitioned by (dt string, hour string);
② 双分区表,按天和小时分区,在表结构中新增加了dt和hour两列。
③ 先以dt为文件夹,再以hour子文件夹区分

添加分区表语法

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION ‘location’][, PARTITION partition_spec [LOCATION ‘location’], …];

partition_spec:
:(partition_column = partition_col_value, partition_column = partition_col_value, …)

hive> alter table tb_user1 add partition (age=10) location '/user/hive';
OK
Time taken: 0.239 seconds
hive> load data local inpath '/root/users.txt' into table tb_user1 partition (age=10);
Loading data to table mydb2.tb_user1 partition (age=10)
Partition mydb2.tb_user1{age=10} stats: [numFiles=3, numRows=0, totalSize=1388, rawDataSize=0]
OK
Time taken: 1.836 seconds

4、Hive的SerDe

① SerDe 用于做序列化和反序列化。
② 构建在数据存储和执行引擎之间,对两者实现解耦。
③ Hive通过ROW FORMAT DELIMITED以及SERDE进行内容的读写。

5、Hive的索引

目的:优化查询以及检索性能

a)创建索引

create index t1_index on table tb_user2(name)
as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’ with deferred rebuild
in table t1_index_table;
as:指定索引器;
in table:指定索引表,若不指定默认生成在default__tb_user2_t1_index__表中
create index t2_index on table tb_user2(name)
as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’ with deferred rebuild;
with deferred rebuild表示在执行alter index xxx_index on xxx rebuild时将调用generateIndexBuildTaskList获取Index的MapReduce,并执行为索引填充数据。

b)查询索引

show index on psn2;

c)重建索引

建立索引之后必须重建索引才能生效)
ALTER INDEX t1_index ON tb_user2 REBUILD;

d)删除索引

DROP INDEX IF EXISTS t1_index ON psn2;

6、Hive的运行方式

  1. 命令行方式cli:控制台模式
  2. 脚本运行方式(实际生产环境中用最多)
  3. JDBC方式:hiveserver2
  4. web GUI接口 (hwi、hue等)

还有一些Hive的分桶、视图、动态分区等一些总结,由于自己没有去深入了解并且没有进行实操,所以在这就不写出来丢人现眼,有需要的小伙伴可以去一些大佬的博看看看,他们会总结的非常仔细。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据复习笔记——hive 的相关文章

  • LeetCode刷题-4

    数组 35 搜索插入位置 题目描述 题目样例 Java方法 二分查找 思路及算法 代码 执行结果 复杂度 题目描述 给定一个排序数组和一个目标值 在数组中找到目标值 并返回其索引 如果目标值不存在于数组中 返回它将会被按顺序插入的位置 请必
  • MySQL 通配符学习小结

    原文 http blog csdn net ithomer article details 5130386 MySQL 通配符 SQL的模式匹配允许你使用 匹配任何单个字符 而 匹配任意数目字符 包括零个字符 在 MySQL中 SQL的模式
  • 归并排序求逆序对

    一 归并排序原理 归并排序采用分治算法 将对整个数组排序的问题转化为合并两个有序子序列的问题 一 1 思想方法 以上是对数组进行排序的过程 首先 我们可认为 当区间长度为1时 每个区间都是有序的 接着 我们合并这些长度为1的区间 得到了第二
  • 抖音如何变现(赚钱)

    未来 每个人都能出名15分钟 安迪 沃霍尔 美国著名波谱艺术领袖 有必要见一下伟大预言家的风采 预言了短视频的兴起 突如一夜春风来 五洲四海刷抖音 2017 2018抖音突然火起了 从城市到农村 从国内到国外 从老人到小孩 从男人到女人 各
  • 小程序云服务器带宽要求,小程序云服务器带宽要求

    小程序云服务器带宽要求 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开的情况 则可能是云服务器的带宽和CPU利用率过高导致 如果您已经通过云监控服务创建过告警任务 当CPU或带宽利用率高时 系统会自动发送告警给您
  • JSONObject与JSONArray的简单使用

    JSONObject 大家看到JSONObject就应该真的这个类是和Json格式相关的吧 没错 JSONObject就是将数据json化的一个类 它是以键值对存在的 key value形式和map类型比较相像 下面我们先来简单使用一下这个
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • 解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:

    报错信息如下 org apache ibatis exceptions PersistenceException Error querying database Cause com mysql jdbc exceptions jdbc4 M
  • 【学习笔记】开源中文对话预训练模型调研总结

    开源中文对话预训练模型调研 文章目录 开源中文对话预训练模型调研 1 CDial GPT 主要工作 LCCC数据集 数据清洗策略 基于规则的清洗 基于分类器的清洗 模型 输入表征 训练 2 GPT2 chitchat 3 EVA1 0 WD
  • 网络安全态势感知和OODA模型

    网络安全已经成为全球范围内的重要问题之一 随着信息化和数字化的发展 各种网络攻击和威胁不断出现 给个人 企业 组织和国家带来了巨大的安全风险和经济损失 为了应对这一挑战 网络安全态势感知和OODA模型成为了网络安全领域中非常重要的工具 一
  • python 安装selenium最方便的方法

    dp MacBook Pro 3 chromedriver mac arm64 apple pip install chromedriver autoinstaller Looking in indexes http pypi tuna t
  • springmvc多视图解析

  • linux 复位usb设备 模拟热插拔脚本

    获取USB设备数量 DEVICE NUM lspci grep USB awk F print 1 wc l 获取设备号 DEVICE lspci grep USB awk F print 0000 1 sed n i p 设备解绑 ech
  • IPsec ISAKMP

    Interne 安全连接和密钥管理协议 ISAKMP 是 IPsec 体系结构中的一种主要协议 该协议结合认证 密钥管理和安全连接等概念来建立政府 商家和因特网上的私有通信所需要的安全 因特网安全联盟和密钥管理协议 ISAKMP 定义了程序
  • 力软-获取jfGrid值,并改变值

    问题 页面中jfGrid为动态加载出来的 在js中动态改变cell值之后 需要将jfGrid的值重新赋值一遍 解决 var rowindex 0 jfgrid layout 0 jfGridGet rowdatas rowindex F R
  • Android 在模拟器上使用Geocoder解析Location报 grpc failed无解

    在做定位功能时 用Geocoder解析Location报了一个错 我把模拟器位置设立在印度孟买 按理说Location正常 经纬度可用 应该没问题 但却给我报出异常 在翻了很多资料后感觉是模拟器的原因 因为我在真机上定位的地方都能解析 而且
  • 小白入门C#初探Web简易页面显示信息小案例

    1 创建新项目 选择ASP NET Core Web应用 模型 视图 控制器 然后点击下一步 然后在项目名称里面填写CSharpDemo 点击下一步 直至创建即可 目录结构 Connected Services 是Visual Studio
  • CentOS 8安装并配置NFS服务

    先决条件 我们假设您有一台运行CentOS 8的服务器 我们将在该服务器上设置NFS服务器和其他充当NFS客户端的计算机 服务器和客户端应该能够通过专用网络相互通信 如果您的托管服务提供商不提供私有IP地址 则可以使用公共IP地址并配置服务
  • Python学习第十二天——logging

    1 日志级别 CRITICAL 50 FATAL CRITICAL ERROR 40 WARNING 30 WARN WARNING INFO 20 DEBUG 10 NOTSET 0 不设置 日志的设置是自下而上的 如果等级为ERROR
  • vs2008常用操作汇总

    1 OpenCV2 1环境配置 1 Tools gt Options gt Projects and Solutions gt VC Drectories Show directories for选择include files 加入目录 D

随机推荐

  • Android-给RecyclerView添加分隔线

    RecyclerView和ListView不同 是不自带分隔线的 如此 在讲为Item加入分割线本质的前 先来介绍 认识一下ChildView 也就是平时我们用到的ListView RecyclerView中的getChildAt int
  • 【解决】Win 10+Visual Studio community 2017,许可证到期,不能登录问题

    Win 10 Visual Studio community 2017 许可证到期 不能登录问题 试了很多种方式 会出现很多问题 最终尝试成功 1 在打开vs之后 第一时间点击帮助 发送反馈 报告问题 2 在弹出的对话框中点击发现新的许可证
  • UCI提供给shell和lua使用的配置接口

    转自 http m blog csdn net article details id 47989493 1 uci提供给shell使用的配置借口有两套 1 config get用来读取一个config值 命令格式如下 config getv
  • 【Python爬虫】Python 爬虫的学习和案例,一篇文章带你了解爬虫的密码

    爬虫基础 我们可以把互联网比作一张大网 而爬虫 即网络爬虫 便是在网上爬行的蜘蛛 把网的节点比作一个个网页 爬虫爬到这就相当于访问了该页面 获取了其信息 可以把节点的连线比作网页与网页之间的链接关系 这样蜘蛛通过一个节点后 可以顺着节点连线
  • Linux系统下载并安装Redis

    Linux上下载并安装Redis 下面是下载安装过程 如果只是想快速安装 那就直接看图中命令 全部下载安装命令都在图中 1 在home目录下下载Redis安装包 下载Redis安装包命令 wget http download redis i
  • html5取消了哪些标签,html5删除的标签有哪些

    html5删除的标签 basefont big center font s strike tt u frame noframes frameset bgsound blink marquee applet isindex listing等
  • 使用函数打印无符号整形的二进制表达式

    目录 目录 目录 1 问题描述 输入两个非负整数a b 并输出这两个整数的二进制形式以及这两个数的反码执行逻辑或和逻辑与操作后的二进制形式 2 三个函数作用的详细解释 2 1第一个函数 2 2第二个函数 2 3第三个函数 3 结语 请多多指
  • 一招解决Tomcat闪退

    tomcat的运行需要JRE 一般启动闪退都是因为找不到JRE 也就是说环境安装JDK时环境变量没有配置好 首先检查JDK配置是否正确 确认JDK配置好了以后开始检查错误 在Tomcat的安装目录下的bin文件夹里面找到startup ba
  • 在Windows11系统中安装Anaconda

    1 在电脑自带的应用商店下载或者去Anaconda官网下载 Anaconda官网 2 打开Anaconda官网 如下图 3 点击Download 选择自己电脑对应的版本 这里选择Windows 4 将下载的Anaconda 放在电脑的某个地
  • Python手册(Scientific Computing)--numpy

    文章目录 NumPy的ndarray 创建ndarray ndarrary索引和切片 ndarrary属性 ndarrary方法 numpy函数 NumPy的random随机库 生成n维随机数组 Numba NumPy Numerical
  • 大话数据结构读书笔记 1---线性表

    大话数据结构读书笔记 编程基础 数据结构 算法 1 线性表 顺序储存结构的结构代码 define MAXSIZE 20 储存空间的起始分配量 typedef int ElemType ElemType类型根据实际类型而定 这里假设是int
  • framebuffer驱动详解

    1 framebuffer介绍 1 什么是framebuffer 1 裸机中如何操作LCD 2 OS下操作LCD的难点 显存放在内核中还是应用中是个问题 之前讲的应用和内核之间传递数据用的是copy from usr copy to usr
  • dell灵越笔记本后盖怎么拆_戴尔灵越5584笔记本按键拆卸、安装教程

    最近一直用笔记本 用着用着我发现U键变得迟钝 不灵敏 虽然这是小问题 但对于我的打字造成较大影响 去维修站修又有点浪费 所以就萌生了自己修的念头 发现网上笔记本键帽拆卸的教程不好用 便决定写篇教程 方便他人 第一步 关机 在拆卸笔记本任何部
  • 2023蓝桥杯python 组试题A:2023

    题目 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 例如 20322175 33220022 都完全不包含 2023 而 2
  • 记录一次生产环境MySQL死锁以及解决思路

    一 背景 1 业务背景 这里因为涉及到公司的业务问题不进行深入讨论 下面换成通用的一些业务场景就是举例 2 技术背景 众所周知 所谓锁的产生本质上是想解决资源竞争问题 在MySQL的前提下 MySQL为了解决事务并发独写的问题 在进行ins
  • Ubuntu查看cuda版本号 cudnn版本号

    cuda版本号 nvcc V nvcc version 若遇到 nvcc command not found 添加环境变量 打开 bashrc 添加环境变量如下 export LD LIBRARY PATH usr local cuda l
  • 常用系统命令

    重定向 cat aa txt gt bbb txt 将输出定向到bbb txt cat aaa txt gt gt bbb txt 输出并追加 查看进程 ps ps ef 显示所有进程 例 ps ef grep mysql 管道符 kill
  • webpack从此不再是我们的痛点 — 核心基础

    webpack一直是前端工程师的痛点 因为他的复杂 分散 loader plugin这些第三方 让我们的学习成本陡然上升 使我们一直对他的配置模棱两可 今天带大家彻底明白他如何配置 摆脱困扰我们很久的痛点 本篇主要是webpack基础配置详
  • Proximal Policy Optimization(PPO)和文本生成

    ChatGPT的RLHF步使用了强化学习PPO算法 PPO是一种策略梯度方法 其交替地进行与环境交互采样数据和使用随机梯度上升优化 代理 目标函数 标准策略梯度方法对每个数据样本执行一次梯度更新 而PPO可以采样一批数据后 对模型进行多次梯
  • 大数据复习笔记——hive

    这次主要讲解一下平常使用较多的数据仓库hive 目录 一 Hive 1 Hive的介绍 2 Hive的搭建模式 a 内嵌Derby模式 b Local方式 c Remote方式 3 Hive的数据库和表操作 a 创建数据库 b 删除数据库