Hive 知识点八股文记录 ——(一)特性
Hive通俗的特性
- 结构化数据文件变为数据库表
- sql查询功能
- sql语句转化为MR运行
- 建立在hadoop的数据仓库基础架构
- 使用hadoop的HDFS存储文件
- 实时性较差(应用于海量数据)
- 存储、计算能力容易拓展(源于Hadoop)
支持这些特性的架构
CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor)

服务端
- Driver:包括了Complier、Optimizer和Executor。将Hive sql解析,编译,优化,生成执行计划
- Metastore:存储hive元数据(描述数据的数据,比如一行数据里面,单个数据的名字叫啥,类型是啥,注释是啥,以及表本身的框架) 解耦hive服务和metastore服务
- Thrift:可扩展且跨语言的服务的开发,hive集成服务支持不同编程语言调用hive的接口、
客户端
- CLI: 命令行接口
- Thrift客户端: hive架构的接口基于thrift客户端(如 JDBC, 面向java的连接; ODBC 开放数据连接)
- WEBGUI:网页访问Hive服务接口
Hive执行MR的过程
- User Interface用executeQuery接口,hql发送给Driver
- driver生成 session handle, 并发送给Compiler
- Compiler从metastore获取元数据
- 元数据检查类型后,对为此调整分区,生成计划
- Compiler生成DAG,每个stage都可能涉及M/R job, 元数据操作, HDFS文件操作
- 每个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运行架构
- sql语句进行解析,判断出表达式,projection,datasource等(projection可以理解为select的列的集合)
- sql语句和数据字典(列,table, view)绑定。
- 选出最优的执行计划
- 按Operation datasource result次序执行(可以不读取物理表读取缓冲池返回结果)
Hive on MR 与 SparkSql区别
两者基本相同,但sql解析器不一样(spark做了较多优化)
| Hive | spark | |
|---|---|---|
| 场景 | 离线,非实时 | 实时要求高,速度快的场景 |
| 速度 | 慢 | 快,比传统MR块10-100倍 |
表
表的元数据存储在什么地方
- 内存数据库derby,快,轻量,不稳定
- MySql数据库 持久化好
建表方式
- 直接建表
- 查询建表(通过select得到的结果生成新的表)
- like建表(无数据,结构一致)
表的分类
内部表,外部表
默认创建内部表,创建外部表,需要加上external关键字修饰,还可通过location指定Hive仓库的路径
区别
| 内部表 | 外部表 | |
|---|---|---|
| drop | 删除元数据和文件 | 只删除元数据 |
| load | 数据移动到指定路径 | 不移动到数据仓库目录下 |
优先使用外部表
- 不删除数据,方便数据恢复
- 不加载数据到hive,减少数据传输
- 不对HDFS数据修改
数据处理都用hql完成的话,选择内部表
相关文章:
Hive 知识点八股文记录 ——(一)特性
Hive通俗的特性 结构化数据文件变为数据库表sql查询功能sql语句转化为MR运行建立在hadoop的数据仓库基础架构使用hadoop的HDFS存储文件实时性较差(应用于海量数据)存储、计算能力容易拓展(源于Hadoop) 支持这些特性的架构 CLI&…...
如何使用PHP替换回车为br
1、使用PHP内置的nl2br()函数 nl2br()函数是PHP内置的函数,可以将任何字符串中的回车符(\n)替换为HTML中的换行符(br)。具体使用方法如下: $string "这里有一个\n换行符"; $string nl2br($str…...
Unity 场景优化策略
Unity 场景优化策略 GPU instancing 使用GPU Instancing可以将多个网格相同、材质相同、材质属性可以不同的物体合并为一个批次,从而减少Draw Calls的次数。这可以提高性能和渲染效率。 GPU instancing可用于绘制在场景中多次出现的几何体,例如树木或…...
Wireshark在Windows上安装后报错怎么办?
Wireshark是一个非常好的网络抓包分析工具,有了他可以轻松解决网络问题,大家有没有使用过呢? 在生产环境使用过的朋友是否各种windows系统安装时遇到各种问题?比如说缺少某某文件,我们经常的做法是找个DLL放在System32…...
【Proteus仿真】【51单片机】水质监测报警系统设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能: 系统运行后&…...
TensorFlow2.0教程3-CNN
` 文章目录 基础CNN网络读取数据卷积层池化层全连接层模型配置模型训练CNN变体网络简单的深度网络添加了其它功能层的深度卷积NIN网络文本卷积基础CNN网络 读取数据 import numpy as np import tensorflow as tf import tensorflow.keras as keras import tensorflow.keras.la…...
flink1.18.0 sql-client报错
报错 Flink SQL> > > select * from t1; [ERROR] Could not execute SQL statement. Reason: java.lang.ClassNotFoundException: org.apache.kafka.clients.consumer.OffsetResetStrategy 解决 注意 一定要重启flink服务 否则还会报错: Flink SQL> select *…...
基于ssm的校园快递物流管理系统(java+jsp+ssm+javabean+mysql+tomcat)
博主24h在线,想要源码文档部署视频直接私聊,9.9拿走! 基于javawebmysql的ssm校园快递物流管理系统(javajspssmjavabeanmysqltomcat) 运行环境: Java≥8、MySQL≥5.7、Tomcat≥8 开发工具: eclipse/idea/myeclipse/s…...
C++:this指针和构造与析构的运用
目录 一,this指针 二,构造函数 三,析构函数 四,析构与构造的调用 一,this指针 首先,我们先观察以下类: #include <iostream> using namespace std; class Date { public: void In…...
通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站
ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610,IPC940 升级款) 一、机箱功能和技术指标: 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …...
机器学习写代码时遇到的问题(23.11.9)
AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘ 导包的时候改一下 import matplotlib matplotlib.use(TkAgg) import matplotlib.pyplot as plt UserWarning: Glyph 27425 (\N{CJK UNIFIED IDEOGRAPH-6B21}) missing from current font. …...
C#学习系列之事件
C#学习系列之事件 前言事件发布者和订阅者事件触发和注册事件声明事件订阅事件触发使用 总结 前言 基础学习。 事件 发布者和订阅者 发布者:通知某件事情发生的。 订阅者:对某件事情关注的。 事件触发和注册 触发:事件发生就通知所有关…...
list部分接口模拟实现(c++)
List list简介list基本框架list构造函数list_node结构体的默认构造list类的默认构造 push_back()iteartor迭代器迭代器里面的其他接口const迭代器通过模板参数实现复用operator->() insert()erase()clear()析构函数迭代器区间构造拷贝构造operator() list简介 - list可以在…...
数据结构(C语言) 实验-栈与字符串
删除子串 字符串采用带头结点的链表存储,设计算法函数void delstring(linkstring s, int i,int len) 在字符串s中删除从第i个位置开始,长度为len的子串。 void delstring(linkstring s, int i, int len) {linkstring p,q,r;int cnt 1;p s->next;wh…...
xLua Lua访问C#注意事项(七)
调用成员方法 注意:调用成员方法,第一个参数需要传该对象,建议用冒号语法 loacl camera CS.UnityEngine.GameObject.Find("Main Camera") --冒号语法 camera:GetComponent("Camera") --点语法 camera.GetComponent(camera,"…...
vue3+antv2.x的画布
报错信息: TypeError: Cannot destructure property component of registry_1.shapeMaps[node.shape] as it is undefined. at VueShapeView.renderVueComponent (http://192.168.10.35:9029/node_modules/.vite/deps/antv_x6-vue-shape.js?v49fbfab0:5569:19…...
Docker部署ubuntu1804镜像详细步骤
Docker部署ubuntu1804镜像详细步骤 ubuntu镜像库地址:https://hub.docker.com/_/ubuntu/tags?page1&ordering-name 拉取镜像(默认为最新版本): docker pull ubuntu或,拉取指定版本镜像: docker pull…...
mac 卸载第三方输入法
输入法设置里的移除,并不是真的卸载,点击还是能添加回来 在活动监视器里强制退出此输入法在访达界面使用快捷键 ShiftcommandG在弹出的对话框内输入以下路径(/资源库/Input Methods),再点击下面的前往找到你要卸载的输…...
可观察性在软件测试中的重要性
当今应用生态系统的需求和加速的数字化转型使可观察性成为人们关注的焦点。可观察性提供了对应用程序行为和技术生态系统的深入可见性,并支持更快、更明智的决策。由于缺乏可观察性,软件开发团队倾向于对生产系统行为、潜在性能瓶颈或未来故障场景做出假…...
Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据
本示例使用设备介绍:液显WIFI无线网络HTTP协议RFID云读卡器可编程实时可控开关TTS语-淘宝网 (taobao.com) unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, ScktComp, StdCtrls, ScktCom…...
BPM引擎系列(二) Activiti入门-老牌引擎还能打吗
Activiti入门——老牌引擎还能打吗?系列第二篇:Activiti 7 Spring Boot 集成实战,从配置到跑通一个请假流程。一、Activiti?Flowable?Camunda?我懵了 上篇咱们学完了BPMN,信心满满地准备上手干…...
# WebNFC:让网页与NFC标签无缝交互的创新实践在移动互联网飞速发展的今天,*8We
WebNFC:让网页与NFC标签无缝交互的创新实践 在移动互联网飞速发展的今天,WebNFC(Web Near Field Communication)作为一项新兴的浏览器API,正在逐步改变我们与物理世界互动的方式。它允许网页直接读取和写入NFC标签内容…...
计算机毕业设计:Python股票量化分析与深度学习预测平台 Flask框架 TensorFlow LSTM 数据分析 可视化 大数据 大模型(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
为什么2025年每个网盘用户都需要LinkSwift直链助手?
为什么2025年每个网盘用户都需要LinkSwift直链助手? 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...
ROS2 Humble + MoveIt2 配置实战:解决‘模型不动’、‘只有虚影’等常见报错问题
ROS2 Humble MoveIt2 实战排障指南:从模型虚影到运动规划的全链路解决方案 当你在深夜的实验室里,终于完成了机械臂URDF模型的最后一行代码,满怀期待地启动demo.launch.py文件时——却发现RViz中要么空空如也,要么只有孤零零的虚…...
告别数据丢失!深入解析M24C08 EEPROM的页写缓冲与自定时写入周期
告别数据丢失!深入解析M24C08 EEPROM的页写缓冲与自定时写入周期 在嵌入式系统开发中,数据可靠性往往决定着产品的成败。想象这样一个场景:你的设备刚刚完成了一次关键数据写入,系统立即读取验证却发现数据异常——这不是代码逻辑…...
Docker+Kubernetes国产化栈终极选型对比(龙蜥Anolis OS vs 欧拉openEuler vs 中标麒麟):性能压测数据+等保审计支持度+厂商服务SLA三维度权威评测
第一章:Docker国产化演进背景与政策合规全景图近年来,随着《网络安全法》《数据安全法》《关键信息基础设施安全保护条例》及信创产业“28N”体系的纵深推进,容器技术的自主可控成为政务、金融、能源等关键行业基础设施升级的核心关切。Docke…...
告别内核编译:手把手教你用Linux configfs动态配置USB音频设备(UAC2.0实战)
告别内核编译:手把手教你用Linux configfs动态配置USB音频设备(UAC2.0实战) 在嵌入式开发中,将单板计算机(如树莓派或RK3399开发板)配置为USB音频设备的需求越来越常见。传统方法需要重新编译内核、修改设备…...
nli-MiniLM2-L6-H768从零部署:Ubuntu服务器上离线运行零样本分类服务
nli-MiniLM2-L6-H768从零部署:Ubuntu服务器上离线运行零样本分类服务 1. 项目概述 nli-MiniLM2-L6-H768是一款基于cross-encoder/nli-MiniLM2-L6-H768轻量级NLI模型开发的本地零样本文本分类工具。它最大的特点是无需任何微调训练,只需输入文本和自定义…...
GD32F103替换STM32F103,除了Pin to Pin还要注意这几点(硬件篇)
GD32F103替换STM32F103硬件设计实战指南 当硬件工程师面临元器件替换决策时,GD32F103系列作为STM32F103的经济型替代方案,确实能显著降低BOM成本。但在实际项目中,我们往往发现那些宣称"Pin to Pin兼容"的芯片,总会在某…...
