原文链接:

https://www.toutiao.com/i6766784274965201415

一、普通建表方式

create table stu_info(

id int,

name string

)ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '

载入数据

load data local inpath '/data/hivetest/stu_info_local' into table stu_info;

load data inpath '/data/hivetest/stu_info_local' into table stu_info;

另外的方式

官网

二、子查询方式建表

我们练习下

创建一个练习库

创建一个普通表

create table normal(

id int,

name string

)ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '

我们装载数据

load data local inpath '/data/hivetest/stu_info_two' into table normal;

我们看数据是存在的

我们利用子查询生成新表

create table normal_zcx_t as select * from normal;

实际在跑MapReduce

我们查看表和数据

我们可以看到元数据也存在

表结构也一样

我们再看下HDFS

所以子查询将查询的数据和表的结构赋予一张新的表

三、Like建表

我们建表

create table normal_like_t like normal;

只有表结构,没有数据,但是相对于子查询没有MapReduce执行,速度会快很多。

元数据和HDFS都有

四、数据共享

我们重新创建一个数据库

创建员工表

创建部门表

导入数据

我们创建表引用另外一个表的文件,比如引入我们的dept表的文件

可以看到表

元数据也有

数据也有

我们把dept_yr数据清空,会发现dept的数据竟然也没有了

那我们重新加载数据呢?

这时候我们明白了,它俩在一起关联的,添加和清除在一起。

如果删除的话 drop table dept_yr;数据还是清空

所以这种方式建表,他们是互相影响的。

数据共享一份数据,删除的时候就把共享的数据删除

删除表也会把元数据数据删除,清除HDFS上的文件

建表中,这有两个关键字

如果我们不加这两个关键字,表默认是管理表

我们先看TEMPORARY

我们创建

我们导入数据

去查询元数据,发现没有信息

用desc formatted查看,信息是有的

我们看其中的数据存放路径

查看一下HDFS

这就是临时表的一些特点

如果关闭的话,就会自动删除临时表,也可以手动删除,常作为临时结果使用。

如果用location+temporary共享数据会发生什么呢?可以做个练习。(1)关闭客户端对原始数据的影响?(2)删除临时表对原始数据的影响?(3)如果是清空临时表呢?

我们创建EXTERNAL表

我们看元数据

Formatted

我们再dept中加载数据

发现数据在外部表也是有的

如果我们清空外部表,就会报错

FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table dept_ext.

那我们删除外部表呢?不会对原始数据产生影响

元数据也没了

练习:如果不使用location,直接创建的话,删除表会怎么样?

总结:删除表时,内部表元数据和数据一起删除,而外部表只删除元数据,不会删除数据,以及HDFS上表对应的目录及文件都不会删除。

Hive建表和内外部表的使用的更多相关文章

  1. [Hive_3] Hive 建表指定分隔符

    0. 说明 Hive 建表示例及指定分隔符 1. Hive 建表 Demo 在 Hive 中输入以下命令创建表 user2 create table users2 (id int, name stri ...

  2. hive,分桶,内外部表,分区

    简单的word-count操作: [root@master test-map]# head -10 The_Man_of_Property.txt    #先看看数据Preface“The Forsy ...

  3. CDH集群部署hive建表中文乱码

    背景:部署CDH集群的 hive 服务,选用 mysql 作为 hive 元数据的存储数据库,通过 hive cli 建表时发现中文注释均乱码. 现象:hive端建表中文注释乱码. 定位: 已经确认过 ...

  4. 利用MySQL原数据信息批量转换指定库数据表生成Hive建表语句

    1.写出文件工具类 package ccc.utile; import java.io.*; /** * @author ccc * @version 1.0.0 * @ClassName Write ...

  5. 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式

    1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具   本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...

  6. hive内部表、外部表、分区表、视图

    1.Table 内部表 1).与数据库中的Table在概念上是类似的 2).每一个Table在Hive中都有一个相应的目录存储数据 3).所有的Table数据(不包括 External Table) ...

  7. Hive通过查询语句向表中插入数据注意事项

    最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...

  8. 039 hive中关于数据库与表等的基本操作

    一:基本用法 1.新建数据库 2.删除数据库 3.删除非空的数据库 4.指定数据库的位置 LOCATION:指定数据库的位置,不会在系统的默认文件下. 5.在指定数据库中新建表(验证在指定的数据库中可 ...

  9. Hive创建内部表、外部表

    使用hive需要hive环境 启动Hive 进入HIVE_HOME/bin,启动hive ./hive 内部表 建表 hive> create table fz > (id int,nam ...

随机推荐

  1. Netty 编解码奥秘

    Netty中编解码 Netty 的解码器有很多种,比如基于长度的,基于分割符的,私有协议的.但是,总体的思路都是一致的. 拆包思路:当数据满足了 解码条件时,将其拆开.放到数组.然后发送到业务 han ...

  2. Redis集群环境各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

    总结/朱季谦 在搭建Redis5.x版本的集群环境曾出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况,故而把解决方式记录下来. 在以下 ...

  3. 谱聚类算法—Matlab代码

    % ========================================================================= % 算 法 名 称: Spectral Clus ...

  4. PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台

    上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务.但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑.分页.批量多次处理,改造为耗时较小的适合使用RESTfu ...

  5. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

  6. Springboot MVC 自动配置

    Springboot MVC 自动配置 官方文档阅读 https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#w ...

  7. TFTP协议介绍-python实现tftp客户端

    1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...

  8. 【C语言】Socket发送HTTP-TCP请求,数据有字符串插入

    问题描述: 场景:编写Socket接口,向LOKI发送POST请求查询数据 BUG发现位置:通过cJSON读取时间戳,发现被截断. 现象:通过read()去读取返回的数据,数据行中被插入字符:如下 c ...

  9. JAVA判断某个元素是否在某个数组中

    先把数组转为list 然后再利用contains方法 String[] strArr = new String[] { "a1", "b1", "c1 ...

  10. 【LeetCode】1003. Check If Word Is Valid After Substitutions 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 循环 日期 题目地址:https://leetcod ...