-Hive-

Hive定义

Hive 是一种数据仓库技术,用于查询和管理存储在分布式环境下的大数据集。构建于Hadoop的HDFS和MapReduce上,用于管理和查询分析结构化/非结构化数据的数据仓库;

  • 使用HQL(类SQL语句)作为查询接口;
  • 使用HDFS作为底层存储;
  • 使用MapReduce作为执行层,即将HQL语句转译成M/R Job然后在Hadoop执行
    Hive的表其实就是HDFS的目录/文件夹,按表名把文件夹分开。如果是分区表,则分区值是子文件夹;

Hive概述—元数据、数据、目录

  • 元数据保存在DB(Derby/MySQL)中,包括表的名字、表的列和分区及其属性,表的属性包括是否为外部表等,表的数据所在目录等;
  • 数据位于集群目录下:
  1. 内部表:/user/hive/warehouse/表名;
  2. 外部表:用户自定的目录;
  • 表的数据即文件(表对应文件夹下);上传文件即相当于上传数据到数据表中;文件可以有多个;表的分区对应子目录;

Hive概述—Hive Shell

Hive Shell 把 HiveQL 查询转换为一系列 MapReduce 作业对任务进行并行处理, 然后返回处理结果。

Hive 采用 RDBMS 表 (table) 形式组织数据
, 并为存储在 Hadoop上的数据提供附属的对数据
进行展示的结构描述信息,该描述信息称为元数据
(metadata)或表模式,以 metastore 形式存储在
RDBMS 数据库中。

Hive使用—内、外部表的区别

两者的相同点:需要指定元数据;都支持分区

不同点:实际数据的存储地点不同

  1. 内部表。实际数据存储在数据仓库目录(默认集群/user/hive/warehouse 下)。删除表时,表中的数据和元数据将会被同时删除。
  2. 外部表。实际数据存储在创建语句location指定的HDFS路径中,不会移动到数据库目录中。如果删除一个外部表,仅会删除元数据,表中的数据不会被删除。

Hive使用—分区Partition

在实际项目中,经常“按天分表 的模式设计数据库!Hive分区类似数据库中相应分区列的一个索引;Hive表中的一个分区对应表下的一个目录,所有分区的数据都存储在各自对应的子目录中

例如:htable包含ds、city两个分区,则相同日期、不同
城市的hdfs目录分别为:

  • /datawarehouse/htable/ds=20100301/city=GZ
  • /datawarehouse/htable/ds=20100301/city=BJ

Hive使用—桶Bucket

桶对指定列进行哈希(hash)计算时,根据哈希值切分数据,每个桶对应一个文件。
例如:将属性列user分散到32个桶中,哈希值为0、10的分别对应的文件为:

  • /datawarehouse/htable/ds=20100301/city=GZ/part-00000
  • /datawarehouse/htable/ds=20100301/city=GZ/part-00010

Hive使用—分区、分桶、索引

  • 索引和分区最大的区别就是索引不分割数据表,分区分割数据表。
  • 分区和分桶最大的区别就是分桶随机分割数据表,分区是非随机分割数据表。

Hive使用—Hive 表 DDL 操作

  1. Create/Drop/Alter 数据库
  2. Create/Drop/Truncate 表
  3. Alter 表/分区/列
  4. Create/Drop/Alter 视图
  5. Create/Drop/Alter 索引
  6. Create/Drop 函数
  7. Create/Drop/Grant/Revoke 角色和权限

Hive使用—Hive 表 DML 操作

  1. 将文件中的数据Load到 Hive 表中
  2. select 操作
  3. 将 select 查询结果插入 hive 表中
  4. 将 select 查询结果写入文件
  5. Hive 表 ACID 事务特性

Hive使用—Hive数据类型

基本数据类型:

  • tinyint/smallint/int/bigint 整数类型
  • float/double 浮点类型
  • boolean 布尔类型
  • string/varchar/char 字符串类型
    复杂数据类型:
  • array:数组类型,由一系列相同的数据类型的元素组成
  • map:集合类型,包含key->value键值对,可通过key访问元素。
  • struct:结构类型,可以包含不同数据类型的元素,这些元素可以通过“点语法”的方式来得到所需要的元素。
    时间类型:
  • Date: 日期(年月日)
  • Timestamp: 是unix的一个时间偏移量
  • select unix_timestamp(); 查看系统的时间偏移

Hive使用—Hive表操作语法

创建表

image.png

  • external 外部表,类似于mysql的csv引擎
  • partitioned by 指定分区字段
  • clustered by sorted by 可以对表和分区对某个列进行分桶操作,也可以利用sorted by对某个字段进行排序
  • row format delimited fields terminated by ‘\t’ 指定数据行中字段间的分隔符和数据行分隔符
  • stored as 指定数据文件格式:textfile sequence rcfile inputformat (自定义的inputformat 类)
  • location 指定数据文件存放的hdfs目录

内部表建表指令(示例)
CREATE TABLE pokes (foo INT, bar STRING) row format delimited fields terminated by ‘\t’;

外部表建表指令(示例)
CREATE external TABLE ext_pokes (foo INT, bar STRING) row format delimited fields terminated by ‘\t’ location ‘/data/extpokes’

删除表

  • drop table [IF EXISTS] table_name
  • 删除内部表时会删除元数据和表数据文件
  • 删除外部表(external)时只删除元数据

修改表

image.png

image.png

Hive使用—HiveQL加载数据

加载文件数据:(local 本地、hdfs)文件数据到指定的表分区
LOAD DATA LOCAL INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

从指定表中选取数据插入到其他表中

FROM src 
INSERT OVERWRITE TABLE dest1 SELECT src.* 
WHERE src.key < 100 
INSERT OVERWRITE TABLE dest2 SELECT src.key, 
src.value WHERE src.key >= 100 and src.key < 200 

Hive使用—HiveQL Select语句

image.png

Hive使用—分区表

image.png

Hive使用—桶的使用

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 安装 JDK

2019独角兽企业重金招聘Python工程师标准>>> 1、下载oracle jdk 下载地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择同一协议&#xff0c;下载rpm格式版本jdk&#xff0c;或tar.gz格式jdk。 2、卸载本机openjdk 2.1、查…

javascript 布尔_JavaScript布尔说明-如何在JavaScript中使用布尔

javascript 布尔布尔型 (Boolean) Booleans are a primitive datatype commonly used in computer programming languages. By definition, a boolean has two possible values: true or false.布尔值是计算机编程语言中常用的原始数据类型。 根据定义&#xff0c;布尔值有两个…

如何进行数据分析统计_对您不了解的数据集进行统计分析

如何进行数据分析统计Recently, I took the opportunity to work on a competition held by Wells Fargo (Mindsumo). The dataset provided was just a bunch of numbers in various columns with no indication of what the data might be. I always thought that the analys…

经典:区间dp-合并石子

题目链接 &#xff1a;http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid737 这个动态规划的思是&#xff0c;要得出合并n堆石子的最优答案可以从小到大枚举所有石子合并的最优情况&#xff0c;例如要合并5堆石子就可以从&#xff0c;最优的23和14中得到最佳的答案。从两堆…

常见排序算法_解释的算法-它们是什么以及常见的排序算法

常见排序算法In its most basic form, an algorithm is a set of detailed step-by-step instructions to complete a task. For example, an algorithm to make coffee in a french press would be:在最基本的形式中&#xff0c;算法是一组完成任务的详细分步说明。 例如&…

020-Spring Boot 监控和度量

一、概述 通过配置使用actuator查看监控和度量信息 二、使用 2.1、建立web项目&#xff0c;增加pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 启动项目&a…

matplotlib布局_Matplotlib多列,行跨度布局

matplotlib布局For Visualization in Python, Matplotlib library has been the workhorse for quite some time now. It has held its own even after more nimble rivals with easier code interface and capabilities like seaborn, plotly, bokeh etc. have arrived on the…

Hadoop生态系统

大数据架构-Lambda Lambda架构由Storm的作者Nathan Marz提出。旨在设计出一个能满足实时大数据系统关键特性的架构&#xff0c;具有高容错、低延时和可扩展等特性。Lambda架构整合离线计算和实时计算&#xff0c;融合不可变性&#xff08;Immutability&#xff09;&#xff0c…

javascript之 原生document.querySelector和querySelectorAll方法

querySelector和querySelectorAll是W3C提供的 新的查询接口&#xff0c;其主要特点如下&#xff1a; 1、querySelector只返回匹配的第一个元素&#xff0c;如果没有匹配项&#xff0c;返回null。 2、querySelectorAll返回匹配的元素集合&#xff0c;如果没有匹配项&#xff0c;…

RDBMS数据定时采集到HDFS

[toc] RDBMS数据定时采集到HDFS 前言 其实并不难&#xff0c;就是使用sqoop定时从MySQL中导入到HDFS中&#xff0c;主要是sqoop命令的使用和Linux脚本的操作这些知识。 场景 在我们的场景中&#xff0c;需要每天将数据库中新增的用户数据采集到HDFS中&#xff0c;数据库中有tim…

单词嵌入_神秘的文本分类:单词嵌入简介

单词嵌入Natural language processing (NLP) is an old science that started in the 1950s. The Georgetown IBM experiment in 1954 was a big step towards a fully automated text translation. More than 60 Russian sentences were translated into English using simple…

使用Hadoop所需要的一些Linux基础

Linux 概念 Linux 是一个类Unix操作系统&#xff0c;是 Unix 的一种&#xff0c;它 控制整个系统基本服务的核心程序 (kernel) 是由 Linus 带头开发出来的&#xff0c;「Linux」这个名称便是以 「Linus’s unix」来命名的。 Linux泛指一类操作系统&#xff0c;具体的版本有&a…

python多项式回归_Python从头开始的多项式回归

python多项式回归Polynomial regression in an improved version of linear regression. If you know linear regression, it will be simple for you. If not, I will explain the formulas here in this article. There are other advanced and more efficient machine learn…

《Linux命令行与shell脚本编程大全 第3版》Linux命令行---4

以下为阅读《Linux命令行与shell脚本编程大全 第3版》的读书笔记&#xff0c;为了方便记录&#xff0c;特地与书的内容保持同步&#xff0c;特意做成一节一次随笔&#xff0c;特记录如下&#xff1a; 《Linux命令行与shell脚本编程大全 第3版》Linux命令行--- Linux命令行与she…

彻底搞懂 JS 中 this 机制

彻底搞懂 JS 中 this 机制 摘要&#xff1a;本文属于原创&#xff0c;欢迎转载&#xff0c;转载请保留出处&#xff1a;https://github.com/jasonGeng88/blog 目录 this 是什么this 的四种绑定规则绑定规则的优先级绑定例外扩展&#xff1a;箭头函数this 是什么 理解this之前&a…

⚡如何在2分钟内将GraphQL服务器添加到RESTful Express.js API

You can get a lot done in 2 minutes, like microwaving popcorn, sending a text message, eating a cupcake, and hooking up a GraphQL server.您可以在2分钟内完成很多工作&#xff0c;例如微波炉爆米花&#xff0c;发送短信&#xff0c; 吃蛋糕以及连接GraphQL服务器 。 …

leetcode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?

给你一个下标从 0 开始的正整数数组 candiesCount &#xff0c;其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数组 queries &#xff0c;其中 queries[i] [favoriteTypei, favoriteDayi, dailyCapi] 。 你按照如下规则进行一场游戏&#xff1a; 你…

回归分析_回归

回归分析Machine learning algorithms are not your regular algorithms that we may be used to because they are often described by a combination of some complex statistics and mathematics. Since it is very important to understand the background of any algorith…

ruby nil_Ruby中的数据类型-True,False和Nil用示例解释

ruby niltrue, false, and nil are special built-in data types in Ruby. Each of these keywords evaluates to an object that is the sole instance of its respective class.true &#xff0c; false和nil是Ruby中的特殊内置数据类型。 这些关键字中的每一个都求值为一个对…

浅尝flutter中的动画(淡入淡出)

在移动端开发中&#xff0c;经常会有一些动画交互&#xff0c;比如淡入淡出,效果如图&#xff1a; 因为官方封装好了AnimatedOpacity Widget&#xff0c;开箱即用&#xff0c;所以我们用起来很方便&#xff0c;代码量很少&#xff0c;做少量配置即可&#xff0c;所以&#xff0…