Hive 03 数据存储

标签: hive

1 介绍

hive数据存储基于HDFS,没有专门的数据存储格式。

数据结构主要包括:

  • 数据库
  • 文件
  • 视图

可以直接加载文本文件,创建表时可以指定hive数据的列分隔符与行分隔符。

2 表

2.1 内部表 table

1)介绍

  • 与数据库中的table在概念是是类似的
  • 每一个table在hive中都有一个相应的目录存储数据,所有的table数据(不包含external table)都保存在这个目录中
  • 删除表时,元数据和数据都会被删除

2)示例

create table t1 (tid int, tname string, age int);

-- 将表存放在HDFS上
create table t2 (tid int, tname string, age int) location '/mytable/hive/t2';

-- 指定列的分隔符
create table t3 (tid int, tname string, age int) row format delimited fields terminated by ',';

-- 给表t1增加一列
alter table t1 add columns(english int);
hive> desc t1;
OK
tid                     int
tname                   string
age                     int
english                 int
Time taken: 0.218 seconds, Fetched: 4 row(s)
hive> desc t2
    > ;
OK
tid                     int
tname                   string
age                     int
Time taken: 0.109 seconds, Fetched: 3 row(s)
hive> desc t3;
OK
tid                     int
tname                   string
age                     int
Time taken: 0.122 seconds, Fetched: 3 row(s)
2.2 分区表 partition

1)介绍

  • partition对应于数据库的partition列的密集索引
  • 在hive中,表中的一个partition对应于表下的一个目录,所有的partition的数据都存储在对应的目录中

2)示例

create table partiton_table(sage int, sname string)
partitioned by (gender string)
row format delimited fields terminated by ',';

insert into table partiton_table partition(gender='f')
select age, name from student where gender='f';

insert into table partiton_table partition(gender='m')
select age, name from student where gender='m';
2.3 外部表 external table

1)介绍
- 指向已经在HDFS中存在的数据,可以创建partition。
- 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异。
- 外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接,当删除一个外部表时,只是删除该链接。
这里写图片描述

2)示例

create external table external_student(sid int, sname string, age int)
row format delimited fields terminated by ','
location '/hive/input';
2.4 桶表

1)介绍

对数据进行哈希取值,然后放到不同文件中存储。

2)示例

3 视图

1)介绍

  • 是一种虚表,是一个逻辑概念;可以跨越多张表。
  • 建立在已有表的基础上,视图赖以建立的这些表称为基表。。
  • 可以简化复杂的查询。

2)示例

create view empinfo
as
select *
from emp e, dept d
where e.id = d.id;
版权声明:本文为lihaogn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lihaogn/article/details/82497854

智能推荐

小程序日历选择插件源码

公司需要用到小程序日历段时间选择模块,找了好多都不太靠谱,最终参考别人思考自己需求,开发了这个源码,提供大家使用! 主要代码: 下载地址:https://download.csdn.net/download/huangsiqing88/11128276...

取消Android Studio本地项目关联SVN

作者:谭东 SVN现在大部分快要被Git替代了,所以也应该有很多人想把SVN的项目更改提交到Git上面。那么这就涉及到把原项目取消SVN关联。 现在给大家讲解Android Studio取消关联的方法。 1、项目找到.idea下的vsc.xml,把里面的vcs="svn"里的svn去掉,变为vcs=""即可。 2、删除对应项目文件夹里的各层的.svn文件夹及...

【Network Security!】信息的扫描与嗅探

文章目录 确定扫描目标 确定目标主机IP地址 网站架构探测 确定扫描目标 确定目标主机IP地址 1.获取本机IP地址 2.获取网站地址信息 3.获取指定网站的IP地址 4.确定可能开放的端口和服务 Zenmap是一款非常流行的端口扫描软件(nmap的GUI界面化)。它是用Python语言编写而成的开源的图形界面,能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS)) ...

太赞了!Linux 架构师总结的学习笔记,提供下载

  本文字数:1247,阅读时长大约:1分钟 导读:你想学习 Linux 吗? 最近很多小伙伴找我要一些 Linux 基础资料,于是我翻箱倒柜,把这份技术大牛总结的 Linux 归纳笔记找出来,免费共享给大家! 据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料! 资料介绍 这份资料非常全面且详细,从 Linux 常用命令到 Linux 常用操作,再到shell编程、...

【底层原理】高级开发必须懂的"字节对齐"

认识字节对齐之前,假定int(4Byte),char(1Byte),short(2Byte) 认识字节对齐 先看段代码:   sizeof(Data1)和sizeof(Data2)分别表示Data1和Data2内存占用字节数,输出结果不一样是因为编译时对Data1和Data2做了不同的字节对齐。Data1的对齐为4Byte,Data2的对齐是2Byte。   假定存储起始地址为...

猜你喜欢

爬lol全英雄皮肤

初学爬虫简单的爬取一下lol全英雄皮肤,自己写的,和网上CV的好不一样,觉得文章说得过去的记得留下足迹。 一 分析页面 1.英雄列表 首先在英雄页面找到hero_list.js;至于为什么是这个文件,看图: 观察该文件响应头,获取访问的url,打开新的窗口,访问该链接,能获取对应数据。(这边显示在一行很男查看,推荐一款好用的chrome插件JSONView,可以帮帮我们格式化json数据,可以在g...

解决VUE项目重复点击菜单报错:Avoided redundant navigation to current location: “/xxxxx“. 问题

描述: 报错见下图: 解决方法: 在router文件夹下添加下面一段代码...

Nginx 入门指南(十)

负载均衡模块 负载均衡模块用于从upstream指令定义的后端主机列表中选取一台主机。Nginx 先使用负载均衡模块找到一台主机,再使用 upstream 模块实现与这台主机的交互。为了方便介绍负载均衡模块,做到言之有物,以下选取 Nginx 内置的 ip hash 模块作为实际例子进行分析。 配置 要了解负载均衡模块的开发方法,首先需要了解负载均衡模块的使用方法。因为负载均衡模块与之前书中提到的...

文本和输入:复制和粘贴

Android提供了一个功能强大的基于剪贴板的复制和粘贴框架。 它支持简单和复杂的数据类型,包括文本字符串,复杂数据结构,文本和二进制流数据,甚至应用程序资产。 简单的文本数据直接存储在剪贴板中,而复杂数据则作为粘贴应用程序与内容提供者解析的参考进行存储。 复制和粘贴在应用程序中以及在实现框架的应用程序之间工作。 由于框架的一部分使用内容提供者,因此本主题假定您熟悉Android内容提供程序API...

[unity]代码批量修改图片、文本文件的AssetBundle的Name

  当项目工程内有大量文件,需要打包成AssetBundle的时候,一个一个打包是一件非常麻烦的事情。 批量修改AssetBundle的Name并对AssetBundle包 进行批量 打包。   批量修改项目工程文件的图片、文本文件的AssetBundle   1.批量建立AssetBundle 1.1修改文件的.meta文件的文本内容 来自参考资料1   ...