Hive之一统天下

标签: hive

Hive是什么

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.
1. Hive是一个构建在分布式基础架构Hadoop之上的数据仓库
2. 可方便使用HQL读写和管理大数据
3. 可投射一个schema到一个已存在的数据之上
4. 可通过CLI或者JDBC API连接到HIVE

Hive的优势与不能做什么

Hive的优势
 1. HQL支持类sql的结构化语言查询-->让工程师可以低成本快速分析一些离线数据并得到结果
 2. 统一的元数据管理-->后续会讲到这个metastore会在很多地方被用到
 3. 可扩展-->可以自定义UDF,UDAF,UDTF,可以类别excel中的自定义函数
Hive的不能做什么
 1. Hive不是一个OLAP(On-Line Analytical Processing)系统-->Presto是一个OLAP
 2. Hive不是一个OLTP(On-line Transaction Processing)系统-->不能像关系型数据库那样支持事物处理
 3. Hive表达能力有限-->其实mysql等数据库的表达能力也一样有限,不能支持迭代运算,不易表达复杂运算

 ps:其实sql也是一种编程语言,JAVA这种属于命令式编程语言,
 而sql称之为声明式编程语言,其底层带有一个解释引擎去执行这个程序。
 从这个角度来说,本质都是命令式的编程模型,但从这个封装上来看,
 sql是一个比命令式编程语言的一个升级版本,是一个更高层次的编程语言。
 但sql看上去是比较容易上手和理解,但逻辑表达能力的缺点也很明显。
 个人觉得函数式编程是这两种语言的一个折衷。

Hive架构

图1:
这里写图片描述
图2:
这里写图片描述

结合上图,我们的需要知道:
 1. 用户接口:Hive2的入口基本Thrift--->Thrift是一个跨语言的服务框架,通过它code生成引擎迅速构建服务从而达到各个语言之间的无缝连接。
 2. 驱动器(Driver):查询编译器+执行引擎(or计算引擎)
 3. Hive2的存储是在hdfs-->存储格式可以是txt,seq file等行式存储格式
                     -->也可以是parquet,orc等列式存储格式
 4. Hive的计算引擎可以hadoop的mr,也可以是spark
 5. Hive的metastore-->默认存储在自带的derby上,线上使用一般换成rdb的mysql等

Hive的数据模型

这里写图片描述

基本跟RDB概念差不多,多了一个partition概念,以优化数据的存储和查询

Hive的安装与使用

未完待续

Hive之DDL,DML,Load

未完待续

ps:注意
传统数据库:写时校验模式
Hive:读时校验模式

Hive之可替换的执行引擎

mr
tez
spark

Hive之内部表与外部表

1. 内部表
2. 外部表-hdfs
3. 外部表-hbase
4. 外部表-ES

Hive之UDF,UDAF,UDTF

这里写代码片
版权声明:本文为weixin_42509545原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42509545/article/details/82121028

智能推荐

Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception

启动RMI报如下错误: 最后发现是端口冲突造成的,当时用的5003端口启动服务端的RMI刚好和本地的一个服务端口冲突。 输入netstat -aon|findstr "5003"查询它的pid为3056 继续输入tasklist|findstr "3056",查看是哪个进程或者程序占用了5003端口,结果是:magentproc.exe 找到PID后可以直接...

【LeetCode(Java) - 322】零钱兑换

文章目录 1、题目描述 2、解题思路 3、解题代码 1、题目描述 2、解题思路   定义 dp[i] 表示对于组成金额 i 的最少硬币个数。   如果方案存在,那么至少有一个硬币至少出现了一次:   如果是第 0 个硬币出现了一次,则:dp[i] = dp[i-coins[0]] + 1   如果是第 1 个硬币出现了...

在Visual Studio 2013中配置Entity Framework使用MySQL

环境 使用的软件及版本 - Microsoft Visual Studio Ultimate 2013 (版本 12.0.40629.00 Update 5) - Microsoft.Net Framework 版本 4.6.01055 - MySQL版本: 5.6.17 步骤 1. 创建空的MVC项目 2. 安装扩展 3. 在数据库中建立对应的表 必须在数据库内先新建表,否则asp.net mv...

Python才是世界上最好的言语,php,java靠边站

伟大的入门编程语言有什么特征呢?或者换一种方式问,“当我们教他们编程时,应该给予他们什么?”对于成年人和青少年学生,我认为以下五点非常重要。 学生从入门语言获得的五样东西 非常棒的首次体验,就像一本书的第一页,首先需要“入迷”,学习新知识不可避免的会遇到挫折,但要有持续的热情和好奇心,这对于那些从未接触过编码的年轻人来说是至关重要的; Web编程的能...

动态调整docker容器cpu资源

目的:动态调整系统cpu核数后,如何在不停止容器服务的情况下,docker动态使用最新的CPU资源 事件由来:     1、在ucloud上购买了一台可以热升级的机器,热升级指的是动态更改系统cpu和内存资源     2、随着业务的扩展,发现cpu、内存负载过高,需要在不停止业务的情况下动态扩容,因此使用了ucloud提供的热升级服务,从4核12G扩容为8核...

猜你喜欢

用python itchat包 爬取微信好友头像形成矩形头像集

原创作品,转载请注明作者 abysscarry-袁杰丶 初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 运行结果: ok!!!...

impala实现拉链表

1.文档目的         拉链表是针对数据仓库设计中表存储数据的方式而定义的,即是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。传统数据仓库一般采用拉链的方式保留主数据(例如客户信息)的变化数据,采用这种设计方式的主要原因是减少数据冗余。这个需求在Hadoop中主要是有以下两种实现方式选择: 每天保留一份全量的切片数据。Hadoop平台由...

Codeforce 975E

E. Hag's Khashba time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard output Hag is a very talented person. He has always had an artist inside him but his...

Gradle基础知识

Gradle基础知识 Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言(DSL)来声明项目配置,摒弃了传统基于XML(Ant和Maven)的各种繁琐配置。 Gradle作为Android的构建系统,主要作用是编译应用资源和源代码,将其打包成可供测试、部署、签署和分发的APK。 Android Studio使用Gradle这个高级构建工具包来自动化执行和管理构建流...

Android手机红外开发—点击和长按事件

上一篇文章《红外技术及Android手机红外遥控器开发》中简单介绍了红外遥控技术和Android 手机红外遥控开发操控中的点击事件,只需要按照编码协议规则对键值等进行编码解析,最后转化成数组形式表示的电平信号,调用Android红外技术API发送电平信号数组即可。 但是在实际开发过程中,不仅需要实现点击按键模拟遥控器短按,也需要模拟遥控器的长按操作。那遥控器的长按操作发送的波形电平信号又是怎样的呢...