【赵渝强老师】Hive的内部表与外部表

news/2024/10/26 7:50:32/

在这里插入图片描述

Hive是基于HDFS之上的数据仓库,它把所有的数据存储在HDFS中,Hive并没有专门的数据存储格式。当在Hive中创建了表,可以使用load语句将本地或者HDFS上的数据加载到表中,从而使用SQL语句进行分析和处理。

Hive的数据模型主要是指Hive的表结构,可以分为:内部表、外部表、分区表、临时表和桶表,同时Hive也支持视图。视频讲解如下:

Hive的数据模型

【赵渝强老师】Hive的数据模型

一、使用Hive的内部表

内部表与关系型数据库中的表是一样的。使用create table语句可以创建内部表,并且每张表在HDFS上都会对应一个目录。这个目录将默认创建在HDFS的/user/hive/warehouse下。除外部表外,表中如果存在数据,数据所对应的数据文件也将存储在这个目录下。删除内部表的时候,表的元信息和数据都将被删除。视频讲解如下:

Hive的内部表

【赵渝强老师】Hive的内部表

下面使用之前的员工数据(emp.csv)来创建内部表。

(1)执行create table语句创建表结构。

hive> create table emp
(empno int,
ename string,
job string,
mgr int,
hiredate string,
sal int,
comm int,
deptno int)
row format delimited fields terminated by ',';

由于csv文件是采样逗号进行分隔的,因此在创建表的时候需要指定分隔符是逗号。Hive表的默认分隔符是一个不可见字符。

(2)使用load语句加载本地的数据文件。

hive> load data local inpath '/root/temp/emp.csv' into table emp;

(3)使用下面的语句加载HDFS的数据文件。

hive> load data inpath '/scott/emp.csv' into table emp;

(4)执行SQL的查询。

hive> select * from emp order by sal;

(5)整个执行的过程如下图所示。

在这里插入图片描述

(6)查看HDFS的/user/hive/warehouse/目录可以看到创建的emp表和加载的emp.csv文件,如下图所示。

在这里插入图片描述

二、使用外部表

与内部表不同的是,外部表可以将数据存在HDFS的任意目录下。可以把外部表理解成是一个快捷方式,它的本质是建立一个指向HDFS上已有数据的链接,在创建表的同时会加重数据。而当删除外部表的时候,只会删除这个链接和对应的元信息,实际的数据不会从HDFS上删除。视频讲解如下:

Hive的外部表

【赵渝强老师】Hive的外部表

下面通过具体的步骤演示如何创建Hive的外部表。

[root@bigdata111 ~]# more students01.txt 
1,Tom,23
2,Mary,22
[root@bigdata111 ~]# more students02.txt 
3,Mike,24

(2)将数据文件上传到HDFS的任意目录。

hdfs dfs -mkdir /students
hdfs dfs -put students0*.txt /students

(3)在Hive中创建外部表。

hive> create external table ext_students
(sid int,sname string,age int)
row format delimited fields terminated by ','
location '/students';

(4)执行SQL的查询。

hive> select * from ext_students;

(5)执行的结果如下图所示。

在这里插入图片描述


http://www.ppmy.cn/news/1542049.html

相关文章

Halcon 多相机统一坐标系(标定)

多相机统一坐标系是指将多个不同位置的相机的图像采集到同一个坐标系下进行处理和分析的方法。 在计算机视觉和机器视觉领域中,多相机统一坐标系被广泛应用于三维重建、立体视觉、目标跟踪等任务中。 以gen_binocular_rectification_map(生成描述图像映…

React六官方文档总结三脱围机制

代码下载 React官网已经都是函数式组件文档,没有类组件文档,但是还是支持类组件这种写法。 脱围机制 ref 引用值 当希望组件“记住”某些信息,但又不想让这些信息 触发新的渲染 时,可以使用 ref 。 给组件添加 ref 1、通过从…

从0开始深度学习(14)——模型选择、欠拟合、过拟合

① 模型在训练数据上拟合的比在潜在分布中更接近的现象,就叫过拟合(overfitting) ② 用于对抗过拟合的技术称为正则化(regularization) 1 训练误差和泛化误差 ①训练误差(training error)&…

【linux】ELKB安装token过期

问题 elastic启动时候生成的token 有效期只有30分钟。 30分钟后提示: Couldnt configure Elastic Generate a new enrollment token or configure manually. 解决 进入安装目录 cd /usr/local/elasticsearch/elasticsearch-8.8.1/binll 重新生成 ./elasticsear…

python主流框架Django:ORM框架关联查询与管理器

目录 注意 使用前要调用之前的模型类 F对象 Q对象 聚合函数 排序 关联查询(连表查询) 修改 删除 查询集 QuerySet 注意 使用前要调用之前的模型类 F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用 "F对象&quo…

高并发场景下解决并发数据不一致

简单的场景: 全量数据更新的情况下, 不在乎同一秒的请求都必须要成功, 只留下最新的更新请求数据 方案常用的是 1、数据库增加时间戳标识实现的乐观锁, 请求参数从源头带上微秒或者毫秒时间戳数据库存储, 然后在更新SQL语句上比较 (数据库的时间 < 参数传递的时间) 例如: A…

机器学习与神经网络的当下与未来

一、机器学习与神经网络的发展前景 &#xff08;一&#xff09;各领域的具体应用和作用 生产制造领域 在工业生产中&#xff0c;机器学习和神经网络被用于质量控制。例如&#xff0c;通过对产品外观图像的分析&#xff0c;神经网络能够以极高的准确率识别出产品表面的瑕疵。像…

C++头文件大全及解释(补丁)

一、<iostream> 这个头文件提供了输入输出流的功能。它包含了用于输入&#xff08;如cin&#xff09;和输出&#xff08;如cout&#xff09;的对象和操作符。使用这个头文件&#xff0c;可以方便地进行控制台输入输出操作。 例如&#xff1a; #include <iostream>…