Hive入门

什么是hive?

- Hive是Facebook开发并贡献给Hadoop开源社区的。它是建立在 Hadoop体系架构上的一层 SQL抽象,使得数据相关人 员使用他们最为熟悉的SQL语言就可以进行海量数据的处理、 分析和统计工作

- Hive将数据存储于HDFS的数据文件映射为一张数据库表,以MapReduce作为计算引擎 (Hive on MR),并提供完整的sql查询功能

- 由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建 的数据仓库也秉承了这些特性

Hive构架

Hadoop生态

HQL

基础函数: SELECT FROM WHERE ORDER BY GROUP BY LIMIT ...

排序: SORT BY DISTRIBUTE BY CLUSTER BY

标准聚合函数: COUNT,SUM,MIN,MAX,AVG...

窗口函数: FIRST_VALUE,LAST_VALUE,ROW_NUMBER ,RANK…

CUBE函数:(维度限制) GROUPING SETS,CUBE,ROLLUP,GROUPING_ID(spark sql和hive不能兼容)

定义函数: UDF(User-Defined-Function) 用户自定义函数

UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping)

UDAF(User- Defined Aggregation Funcation) 自定义聚类函数 

Hive的数据单元

●Databases:数据库。概念等同于关系型数据 库的Schema;

●Tables:和关系型数据库中的表在概念上很 类似,每个表在HDFS中都有相应的目录用来存储表的数据

●外部表:Hive中的外部表和内部表很 类似,但是其数据不是放在自己表所属的目 录中,而是存放到别处,这样的好 处是如果你要删除这个外部表,该外部表所指向的数据是不会被 删除的,它只会删除外部表对应的元数据;而如果 你要删除表,该表对应的所有数据包括元数据都会被 删除 ●Partitions:分区,在Hive中,表的每一个分区 对应表下的相应目录,所有分区的数据都是存 储在对应的目录中

●Buckets :分桶,同一个分区内的数据 还可以细分,对指定的列计算其hash,根据hash值切分数据,目的是 为了并 行

●基本操作:

show databases;

show databases like 'xx*';

use database; show tables;

show partitions db.tbl_name;

desc db.table;

desc formatted db.tbl_name;

show create table db.tbl_name;

create table db.new_table like old_table

HQL优化

● 使用分区剪裁、列剪裁 在SELECT中,只拿需要的列,如果有,尽量使用分区 过滤,少用SELECT * 在分区剪裁中,当使用外关 联时,如果将副表的过滤条件写在Where后面,那么就会先全表关 联,之后再过滤 正确的写法是写在 ON后面,或者直接写成子 查询 通过执行计划可以看到具体在哪里 过滤,不确定就分析执行计划,看看执行是怎么样被优化的

● 少用多重COUNT DISTINCT

selecta,sum(b),count(distinct c),count(distinct d) from test group by a;

优化后:

select a,sum(b)as b,count(c) as c,count(d) as d from ( select a,0 as b,c,null as d from test group by a,c union all select a,0 as b,null as c,d from test group by a,d union all select a,b,null as c,null as d from test )tmp group by a;

● 是否存在多对多的关联 ● 尽量原子化操作,尽量避免一个 SQL包含复杂逻辑 ● 使用动态分区 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict

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

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

相关文章

【笔记】MJ Prompt

参数 --chaos 10 or --c 10, 0-10, defalut 0 --quality 1 or --q, 0.25-1, defalut 1 --iw 2, 0.5-2, --stylize 100 or --s 100, 0-1000, defalut 100 --cref URL --cw 100, 0-100stylize 风格化,MJ不同的出图模式,有默认的艺术风格,该值…

【jenkins+cmake+svn管理c++项目】windows修改jenkins的工作目录

jenkins默认的存放源码的workspace是: C:\Users\用户\AppData\Local\Jenkins\.jenkins\workspace。由于jenkins会拉取大量的源代码以及编译生成一些文件,我希望我能自己指定目录作为它的工作空间,放在这里显然不太合适。 那么修改目录的方式有…

跟张良均老师学大数据人工智能——数据挖掘集训营开营

集训营特色: 知识点深入浅出,实现以学促用 以业务内容为主线,数据挖掘技能嵌入 多行业项目实战,全面提升职业素养 全程线上辅导,助力熟练掌握技能 惊喜优惠: 限时“六折”! 师傅带练 方向…

宋仕强论道之华强北科技创新说

宋仕强论道之华强北科技创新说,“创新”是深圳市和华强北灵魂,创新再加上敢想敢干永不言败,造就了深圳市经济奇迹和华强北财富神话!首次在深圳市落槌的“土地拍卖”,华强北“一米柜台”赋予独立经营权,把最…

TCP(socket 套接字)编程 1

一、TCP套接字编程架构如下 二、相关代码实现 1、服务器端代码 package com.company;import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket;public class Main {public static void main(String[] args) {…

本地大模型(免安装绿色版)

上一篇文章我们讨论了如何在本地运行大模型 。 安装本地大模型 大部分软件都需要安装,今天是免安装绿色版。 很多人下载不了原版,所以我放百度网盘了。 下载 下载:llava-1.5大模型(7b参数,流量警告:4G) 运行:.\llava-v1.5-7b-…

FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。

demo演示地址 FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。 入参: object:摄像机对象,即要控制的摄像机。domElement:用于接收用户输入事件的 HTML 元素,通常…

3.26学习总结java初步实现学生管理系统

(该项目通过视频讲解过程中完成,其中将一些操作进行了修改和完善,其目的是为了巩固前面学习java的一些用法,熟悉写项目的过程) 一.项目要求 学生类: 属性:id、姓名、年龄、家庭住址 添加功能: 键盘录入每一个学生信息并添加,需要满足以下要求: ID唯一 删除功能…

总结 | vue3项目初始化(附相应链接)

如何运行 vue 项目:vscode运行vue项目_vscode启动vue项目命令-CSDN博客 vue3项目搭建 目录管理 git管理:vue3项目搭建并git管理_git 新建vue3项目-CSDN博客 目录调整:vue3项目 - 目录调整-CSDN博客 vscode中快速生成vue3模板&#xff1a…

14. Springboot集成RabbitMQ

目录 1、前言 2、什么是RabbitMQ 3、安装RabbitMQ 4、Springboot集成RabbitMQ 4.1、添加依赖 4.2、添加配置 4.3、添加controller,作为生产者 4.4、设置生产者消息确认CallBack 4.5、添加Consumer,作为消费者 4.6、启动程序,访问 1…

【C++】类和对象(四千字解析超完整附实例!!!不看会后悔!!!)

新学期开始了,c课程逐渐深入,今天来了解一下c的类和对象中的封装与数据的初始化和清理! PS.本博客参考b站up黑马程序员的相关课程,老师讲得非常非常好! 封装 封装是C面向对象三大特性之一 1.封装的意义一&#xff1…

国家中英文名称、国家代码(地区代码)、国家域名、经纬度

因为要做世界地图对世界国家的标点,搜索使用到了世界各个国家的地理位置信息,此处做备份与学习。资源地址(免费) export default {"阿尔巴尼亚": {"m_longitude": "19.809","m_latitude&quo…

聚类分析|基于层次的聚类方法及其Python实现

聚类分析|基于层次的聚类方法及其Python实现 0. 基于层次的聚类方法1. 簇间距离度量方法1.1 最小距离1.2 最大距离1.3 平均距离1.4 中心法1.5 离差平方和 2. 基于层次的聚类算法2.1 凝聚(Agglomerative)2.3 分裂(Divisive) 3. 基于…

JavaScript 学习日记(1)---初识JavaScript

初识JavaScript 文章目录 初识JavaScript一、JavaScript 是什么?二、java 和JavaScript 的关系三、JavaScript 的组成四、JS的基本输入输出 ---> 单行注释五、js变量基本概念六、js基本数据类型七、js转义字符八、js类型转换九、运算符 END! 一、JavaScript 是什么? 我们…

沪漂8年回郑州三年如何走上创业之路

大家好,我是大牛,目前人在郑州。 现在标签是: 创业者🚗🐸 (注册有自己的公司,主要是为了自己的产品和接外包项目)独立开发者👨🏻💻 (有自己的小项目)数字游民&…

干货分享之反射笔记

入门级笔记-反射 一、利用反射破泛型集合二、Student类三、获取构造器的演示和使用1.getConstructors只能获取当前运行时类的被public修饰的构造器2.getDeclaredConstructors:获取运行时类的全部修饰符的构造器3.获取指定的构造器3.1得到空构造器3.2得到两个参数的有参构造器&a…

Quartus II仿真出现错误

ModelSim executable not found in D:/intelFPGA/18.0/quartus/bin64/modelsim_ase/win32aloem/ Error. 找不到modelsim地址,原来是我下载了.exe,但没有双击启动安装ase文件夹呀!!!!晕,服了我自己

常见测试技术都有哪些?

测试技术是用于评估系统或组件的方法,目的是发现它是否满足给定的要求。系统测试有助于识别缺口、错误,或与实际需求不同的任何类型的缺失需求。测试技术是测试团队根据给定的需求评估已开发软件所使用的最佳实践。这些技术可以确保产品或软件的整体质量…

前端面试拼图-数据结构与算法(二)

摘要:最近,看了下慕课2周刷完n道面试题,记录下... 1. 求一个二叉搜索树的第k小值 二叉树(Binary Tree) 是一棵树 每个节点最多两个子节点 树节点的数据结构{value, left?, right?} 二叉树的遍历 前序遍历:root→left→right 中…

视觉轮速滤波融合1讲:理论推导

视觉轮速滤波融合理论推导 文章目录 视觉轮速滤波融合理论推导1 坐标系2 轮速计2.1 运动学模型2.2 外参 3 状态和协方差矩阵3.1 状态3.2 协方差矩阵 4 Wheel Propagation4.1 连续运动学4.2 离散积分4.2.1 状态均值递推4.2.2 协方差递推 5 Visual update5.1 视觉残差与雅可比5.2…