当前位置: 首页 > news >正文

Hive 知识点八股文记录 ——(一)特性

Hive通俗的特性

  • 结构化数据文件变为数据库表
  • sql查询功能
  • sql语句转化为MR运行
  • 建立在hadoop的数据仓库基础架构
  • 使用hadoop的HDFS存储文件
  • 实时性较差(应用于海量数据)
  • 存储、计算能力容易拓展(源于Hadoop)

支持这些特性的架构

CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor)
在这里插入图片描述

服务端

  1. Driver:包括了Complier、Optimizer和Executor。将Hive sql解析,编译,优化,生成执行计划
  2. Metastore:存储hive元数据(描述数据的数据,比如一行数据里面,单个数据的名字叫啥,类型是啥,注释是啥,以及表本身的框架) 解耦hive服务和metastore服务
  3. Thrift:可扩展且跨语言的服务的开发,hive集成服务支持不同编程语言调用hive的接口、

客户端

  1. CLI: 命令行接口
  2. Thrift客户端: hive架构的接口基于thrift客户端(如 JDBC, 面向java的连接; ODBC 开放数据连接)
  3. WEBGUI:网页访问Hive服务接口

Hive执行MR的过程

  1. User Interface用executeQuery接口,hql发送给Driver
  2. driver生成 session handle, 并发送给Compiler
  3. Compilermetastore获取元数据
  4. 元数据检查类型后,对为此调整分区,生成计划
  5. Compiler生成DAG,每个stage都可能涉及M/R job, 元数据操作, HDFS文件操作
  6. 每个M/R中,查询结果以临时文件方式放在HDFS中,临时文件由Execution Engine从HDFS读取,作为Driver返回内容

特点

  • Hive加载数据的时候不对数据检查(关系型是检查的,若加载数据不符合模式会拒绝执行,称之为写时模式),也不更改加载的数据文件,查询的时候检查数据格式(读时模式)
    • 写时模式加载过程中索引,数据会压缩,加载数据较慢。数据加载好后查询较快
    • 读时模式适用于数据非结构化,存储模式未知的情况
  • hive不支持对特定行的操作,只支持覆盖原数据和追加数据
  • hive不支持事务,索引
  • hive的更新操作为:原表数据转化后存在新表
  • hive支持和hbase集成,实现快速查询,但需要提供sql语法解析外壳
  • hive可认为是MR的包装

Spark通俗的特性

兼容hive

组件

  • SQLContext:封装spark关系型功能
  • DataFrame:分布式,命名列阻止的数据集合,可转化为RDD,支持已有的RDD、结构化数据文件、JSON数据集、Hive表、外部数据库创建DF

sql运行架构

  1. sql语句进行解析,判断出表达式,projection,datasource等(projection可以理解为select的列的集合)
  2. sql语句和数据字典(列,table, view)绑定。
  3. 选出最优的执行计划
  4. 按Operation datasource result次序执行(可以不读取物理表读取缓冲池返回结果)

Hive on MR 与 SparkSql区别

两者基本相同,但sql解析器不一样(spark做了较多优化)

Hivespark
场景离线,非实时实时要求高,速度快的场景
速度快,比传统MR块10-100倍

表的元数据存储在什么地方

  1. 内存数据库derby,快,轻量,不稳定
  2. MySql数据库 持久化好

建表方式

  1. 直接建表
  2. 查询建表(通过select得到的结果生成新的表)
  3. like建表(无数据,结构一致)

表的分类

内部表,外部表

默认创建内部表,创建外部表,需要加上external关键字修饰,还可通过location指定Hive仓库的路径

区别

内部表外部表
drop删除元数据和文件只删除元数据
load数据移动到指定路径不移动到数据仓库目录下

优先使用外部表

  1. 不删除数据,方便数据恢复
  2. 不加载数据到hive,减少数据传输
  3. 不对HDFS数据修改

数据处理都用hql完成的话,选择内部表

http://www.lryc.cn/news/224791.html

相关文章:

  • 如何使用PHP替换回车为br
  • Unity 场景优化策略
  • Wireshark在Windows上安装后报错怎么办?
  • 【Proteus仿真】【51单片机】水质监测报警系统设计
  • TensorFlow2.0教程3-CNN
  • flink1.18.0 sql-client报错
  • 基于ssm的校园快递物流管理系统(java+jsp+ssm+javabean+mysql+tomcat)
  • C++:this指针和构造与析构的运用
  • 通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站
  • 机器学习写代码时遇到的问题(23.11.9)
  • C#学习系列之事件
  • list部分接口模拟实现(c++)
  • 数据结构(C语言) 实验-栈与字符串
  • xLua Lua访问C#注意事项(七)
  • vue3+antv2.x的画布
  • Docker部署ubuntu1804镜像详细步骤
  • mac 卸载第三方输入法
  • 可观察性在软件测试中的重要性
  • Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据
  • javaSE学习笔记(一)概述、语法
  • 接口开发之使用C#插件Quartz.Net定时执行CMD任务工具
  • XSS脚本(存储型xss获取肉鸡的cookies)
  • 【React】04.MVC模式和MVVM模式
  • 调试代码0
  • 【C++心愿便利店】No.12---C++之探索string底层实现
  • Android Studio(列表视图ListView)
  • 让深度神经网络绘画以了解它们是如何工作的
  • https://www.jianshu.com/p/34bf240b85a9
  • 如何导出PPT画的图为高清图片?插入到world后不压缩图像的设置方法?
  • 【Spring】Spring IOC DI