Hive数仓操作(三)

一、Hive 数据库操作

1. 创建数据库
  • 基本创建数据库命令
CREATE DATABASE bigdata;
  • 说明

    • 数据库会在 HDFS 中以目录的形式创建和保存,数据库名称会存储在 Hive 的元数据中。
    • 如果不指定目录,数据库将在 /user/hive/warehouse 下创建。
  • 手动指定目录(了解)

CREATE DATABASE IF NOT EXISTS db_test LOCATION '/test';
  • 说明
    • 使用 IF NOT EXISTS 可以避免因数据库已存在而导致的错误。
    • LOCATION 用于指定数据库在 HDFS 中的存储位置。
2. 查看所有数据库
  • 查看数据库命令
SHOW DATABASES;
  • 说明
    • 该命令将列出所有已创建的数据库名称。
3. 切换数据库
  • 切换到指定数据库
USE bigdata;
  • 说明
    • 切换当前会话的数据库,以后执行的查询和操作将在该数据库中进行。
4. 删除数据库
  • 删除数据库命令
DROP DATABASE database_name;
  • 说明

    • 该命令将删除指定的数据库。如果数据库中存在表,默认情况下会报错。
  • 强制删除数据库

DROP DATABASE database_name CASCADE;
  • 说明

    • 使用 CASCADE 关键字可以强制递归删除,允许删除包含表的数据库。
  • 安全删除,如果数据库存在

DROP DATABASE IF EXISTS database_name CASCADE;
  • 说明
    • IF EXISTS 关键字用于避免因数据库不存在而导致的错误。

5. 显示数据库信息

  • 显示数据库信息
DESC DATABASE bigdata;
  • 说明
    • 该命令将显示指定数据库的详细信息,包括数据库的名称、位置、创建时间等。

二、Hive 创建内部表

Hive 表的类型

在 Hive 中,有多种类型的表,主要包括:

  1. 内部表(Managed Table)

    • 默认的表类型。创建时,Hive 会在默认的 warehouse 目录中创建一个以表名命名的目录,并将数据存储在该目录下。
    • 当删除内部表时,表结构和数据都将被删除。
  2. 外部表(External Table)

    • 创建时,Hive 不会管理数据的存储位置。数据可以存储在 HDFS 中的任何位置。
    • 删除外部表时,只删除表结构,而不会删除数据。
  3. 分区表(Partitioned Table)

    • 将表的数据根据某个列的值进行分区,从而提高查询效率。
    • 每个分区对应一个子目录。
  4. 分桶表(Bucketed Table)

    • 将数据分成多个桶(文件),并可以在查询时提高性能。
    • 通常与分区表结合使用。

创建内部表的步骤

在 Hive 中创建一个表通常遵循以下步骤:

  1. 准备数据文件

    • 数据文件可以在 Linux 文件系统或 HDFS 中存在。
  2. 创建表

    • 表的结构需要与数据文件的格式相对应。
  3. 加载数据

    • 使用 LOAD DATA 命令将数据导入表中。

创建表的语法结构

创建表的基本语法如下:

CREATE TABLE 表名 (
    列名1 类型,
    列名2 类型,
    ...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '分隔符';

三、Hive 内部表的其他操作

1. 向内部表中插入数据

可以使用 INSERT INTO 语句将数据插入内部表,不常单条插入,一般select插入。

INSERT INTO TABLE student VALUES (1, 'Alice', 20);

2. 查询内部表

查询内部表使用标准的 SELECT 语句:

SELECT * FROM student;

3. 删除内部表

使用 DROP TABLE 语句可以删除内部表。与外部表相同,删除内部表时,会删除该表的元数据和所有相关数据。

DROP TABLE IF EXISTS student;

4. 更新内部表

在 Hive 中,内部表不支持直接的 UPDATE 操作,但可以通过创建新表的方式来实现更新。

示例

首先查询并过滤需要更新的数据,然后插入到新表中:

CREATE TABLE student_temp AS 
SELECT * FROM student WHERE id != 1;

-- 然后删除旧表
DROP TABLE student;

-- 重命名新表为旧表名
ALTER TABLE student_temp RENAME TO student;

示例:创建一个学生表(hive的stu数据库)

stu 数据库创建:

CREATE DATABASE IF NOT EXISTS stu;

插入数据之前,需要切换到 stu 数据库:

USE stu;

创建一个学生表:

CREATE TABLE stu (
    id INT,
    name STRING,
    age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
  • 说明
    • ROW FORMAT DELIMITED 指定了行的格式。
    • FIELDS TERMINATED BY ',' 指定了列之间的分隔符为逗号。

从 HDFS 导入数据

假设本地 Linux 文件系统有一个文件 /opt/datas/stu.txt,可以使用 hadoop fs -put 命令将其上传到 HDFS。

hadoop fs -put /opt/datas/stu.txt /datas/

然后将数据从 HDFS 导入到表中:

LOAD DATA INPATH '/datas/stu.txt' INTO TABLE stu;

OVERWRITE

  • 语法
    LOAD DATA INPATH '/datas/stu.txt' OVERWRITE INTO TABLE stu;
    
    • 如果表 stu 已经存在数据,执行该命令后,表中的所有现有数据将被删除,并用新的数据替换。
    • 这意味着结果表只会包含新加载的 stu.txt 文件中的数据。

从本地Linux导入数据

将数据从本地文件系统导入到表中:

LOAD DATA LOCAL INPATH '/opt/datas/stu.txt' INTO TABLE stu;

查询表的数据

查询表中的数据:

SELECT * FROM stu;

注意

  • 当你创建 stu 表并加载数据后,HDFS 的 warehouse 目录下会生成一个名为 stu 的子目录,存储了表的数据文件。
  • /user/hive/warehouse/stu.db/stu该目录通常包含多个文件(如从hdfs目录/datas移动而来的文件/datas/stu.txt变成 /user/hive/warehouse/stu.db/stu/stu.txt),这些文件存储的是实际的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二分查找算法专题(1)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 目录 二分查找算法的介绍 704. 二分查找 34. 在排序数组中查找元素的第一个和 最后一个位置 35. 搜索插入位置 69. x的平…

力扣题解 983

大家好,欢迎来到无限大的判断,祝大家国庆假期愉快 题目描述(中等) 最低票价 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出…

Charles(青花瓷)抓取https请求

文章目录 前言Charles(青花瓷)抓取https请求 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&…

kafka下载配置

下载安装 参开kafka社区 zookeeperkafka消息队列群集部署https://apache.csdn.net/66c958fb10164416336632c3.html 下载 kafka_2.12-3.2.0安装包快速下载地址分享 官网下载链接地址: 官网下载地址:https://kafka.apache.org/downloads 官网呢下载慢…

2024/10/2 408 20题

c d d b b a b c b b a d c d a c

java基础 day1

学习视频链接 人机交互的小故事 微软和乔布斯借鉴了施乐实现了如今的图形化界面 图形化界面对于用户来说,操作更加容易上手,但是也存在一些问题。使用图形化界面需要加载许多图片,所以消耗内存;此外运行的速度没有命令行快 Wi…

【华为HCIP实战课程一】OSPF相关基础介绍及基础配置,网络工程师必修

一、OSPF介绍 开放式最短路径优先协议OSPF(Open Shortest Path First),IPv4使用的OSPFv2,针对IPv6使用OSPFv3协议。 二、为什么需要OSPF OSPF出现之前,网络广泛使用RIP路由协议,RIP由于最大16跳数限制无法适应大型网络,RIP是基于距离矢量算法的路由协议,应用在大型网…

过去8年,编程语言的流行度发生了哪些变化?PHP下降,Objective-C已过时

前天有一个汇总9个不同排名数据的“地表最强”编程语言排行榜,为了更好地理解语言流行度的变化,作者将2016年的类似调查结果与2024年的数据进行了比较。 虽然2016年的调查只包含6个排名,但它仍然提供了宝贵的参考数据。 我们来看看详细的情…

JSON的C实现(上)

JSON的C实现(上) JSON的C实现(上)前言JSON简介JSON的C实现思路小结 JSON的C实现(上) 前言 JSON是众多项目中较为常见的数据交换格式,为不同项目、系统间的信息交换提供了一个规范化标准。JSON…

Unity八股总结

这里写目录标题 OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?动态加载资源的方式?Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。物理更新一般放在哪个系统函数里…

查找与排序-插入排序

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序…

Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习使用数码管。 1.数码管介绍 数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数…

L0-Linux-关卡材料提交

SSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。 SSH 是(C/S…

QSqlDatabase在多线程中的使用

Qt中多线程使用数据库_qt数据库管理类支持多数据库,多线程-CSDN博客 1. 代码&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError>…

【深度学习】05-Rnn循环神经网络-01- 自然语言处理概述/词嵌入层/循环网络/文本生成案例精讲

循环神经网络&#xff08;RNN&#xff09;主要用于自然语言处理的。 循环神经网络&#xff08;RNN&#xff09;、卷积神经网络&#xff08;CNN&#xff09;和全连接神经网络&#xff08;FCN&#xff09;是三种常见的神经网络类型&#xff0c;各自擅长处理不同类型的数据。下面…

RabbitMQ应用

RabbitMQ 共提供了7种⼯作模式, 进⾏消息传递 一、七种模式的概述 1、Simple(简单模式) P:生产者,就是发送消息的程序 C:消费者,就是接收消息的程序 Queue:消息队列,类似⼀个邮箱, 可以缓存消息; ⽣产者向其中投递消息, 消费者从其中取出消息 特点: ⼀个⽣产者P,⼀…

负载均衡--相关面试题(六)

在负载均衡的面试中&#xff0c;可能会遇到一系列涉及概念、原理、实践应用以及技术细节的问题。以下是一些常见的负载均衡面试题及其详细解答&#xff1a; 一、什么是负载均衡&#xff1f; 回答&#xff1a;负载均衡是一种将网络请求或数据传输工作分配给多个服务器或网络资源…

SpringSession微服务

一.在linux中确保启动起来redis和nacos 依赖记得别放<dependencyManagement></dependencyManagement>这个标签去了 1.首先查看已经启动的服务 docker ps 查看有没有安装redis和nacos 2.启动redis和nacos 发现没有启动redis和nacos,我们先来启动它。&#xff0c;…

计算机视觉学习路线:从基础到进阶

计算机视觉学习路线&#xff1a;从基础到进阶 计算机视觉&#xff08;Computer Vision&#xff09;是人工智能和机器学习领域中重要的分支&#xff0c;致力于让计算机能够理解和分析图像、视频等视觉信息。随着深度学习的发展&#xff0c;计算机视觉的应用变得越来越广泛&…

音视频入门基础:FLV专题(7)——Tag header简介

一、引言 从《音视频入门基础&#xff1a;FLV专题&#xff08;3&#xff09;——FLV header简介》中可以知道&#xff0c; 在FLV header之后&#xff0c;FLV文件剩下的部分应由PreviousTagSize和Tag组成。FLV文件 FLV header PreviousTagSize0 Tag1 PreviousTagSize1 Ta…