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

Hive 常见问题

Hive 内部表和外部表的区别

  • 外部表在创建时需要加关键字 external;
  • 创建内部表时,会将数据移动到数据仓库指定的路径;
  • 创建外部表时,不会移动数据,只会记录数据所在的路径;
  • 删除内部表时,会删除元数据和数据本身;
  • 删除外部表时,仅仅删除元数据,不会删除数据本身;

Hive cluster by、sort by、distribute by、order by 的区别

  • order by :全局排序,只有一个 reduce ,数据量很大时会比较慢;
  • sort by :局部排序,只保证每个 reduce 中的数据有序,不能保证全局有序;
  • distribute by :控制 map 结果分发,相同值会被分发到同一个 map ;
  • cluster by :根据指定字段将数据分组,每组内再根据该字段正序排序(只能正序),cluster by = distribute by + sort by;

Hive 分区和分桶的区别

  • 分区是将 Hive 表数据分离为多个目录;
  • 分桶是将对应的数据文件分解为若干个部分;
  • 分区的字段必须是表中没有的字段;
  • 分桶的字段必须是表中已经存在的字段;

Hive Union 和 Union all 的区别

  • union :将多个结果合并为一个,对结果去重并排序;
  • union all :将多个结果合并为一个,不对结果去重不排序;

Hive join 的原理

在 Map 阶段将 on 的字段设为 key ,然后将选择的字段作为 value 在 Reduce 阶段,相同 key 值的数据分发到同一个 Reducer;

Hive 如何优化 join 操作

  • 若有大量 null key ,则先过滤或者随机赋值;
  • 所是大小表 join ,可使用 MapJoin ;
  • 若两张大表 join,可将倾斜的 key 过滤出来单独 join,则会分不到多个 task 进行 join 操作,最后在进行 union 操作;

Hive 的三种自定义函数及区别

  • UDF :用户自定义函数,一对一输出,例如 round;
  • UDTF :用户自定义表生产函数,一对多输出,例如 explode;
  • UDAF :用户自定义聚合函数,多对一输出,例如count,sum 等;

Hive 数据倾斜

什么是数据倾斜?

  • 数据倾斜是指在分布式处理中,数据不均匀,有部分数据比较集中;
  • 数据倾斜会使得在处理过程中,某个结点的处理效率过低,甚至造成内存溢出;

造成数据倾斜的原因

  • 业务本身造成的;
  • 建表时考虑不周,导致 key 分布不均匀;
  • 某些 SQL 操作容易造成数据倾斜;

造成数据倾斜的主要操作

group by
维度过少,某些值比较大,分发到不同 Reduce 操作,造成某个 Reduce 数据倾斜;

join
某些 key 值比较多,或者 key 值存在大量 null ,join 后分发到某个 Reduce 的数据量过大;

数据倾斜的解决方法

group by 造成的数据倾斜

分组中有部分数据比较多,造成数据倾斜。这种情况可以通过调参解决:

set hive.map.aggr=true;
set hive.groupby.skewindata=true;
  • hive.map.aggr=true 表示开启 map 端聚合;
  • hive.groupby.skewindata=true 表示有数据倾斜时进行负载均衡,这会使得生成两个 MR job,第一个 job 会将数据随机分发到不同的 Reduce 进行聚合,可以达到负载均衡的效果;结果传入第二个 MR job ,根据预处理的数据结果按照 group by key 进行分发处理,包获赠相同的 key 分到同一个 Reduce 中,完成聚合;

join 造成的数据倾斜

有大量 null 值 join 的情况

  • 数据中有大量 null 值,可以过滤掉;
  • 使用随机值赋值;

大小表 join 的情况

  • 可以使用 map join 将小表加载到内存中,并在 map 阶段完成 join 操作;
    例如:
 select /*+MAPJOIN(b)*/ a.a1,a.a2,b.b2 from tablea a JOIN tableb b ON a.a1=b.b1  --其中b 为小表

key 值倾斜的情况
可以将倾斜的 key 过滤出来单独 join ,则会分散到多个 task 进行 join’ 操作,最后再进行 union 即可;

相关文章:

Hive 常见问题

Hive 内部表和外部表的区别 外部表在创建时需要加关键字 external;创建内部表时,会将数据移动到数据仓库指定的路径;创建外部表时,不会移动数据,只会记录数据所在的路径;删除内部表时,会删除元…...

51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动大屏_硬件SPI4_参考代码(v1.3)

单片机实际不限,这里采用的STC最新、主推的型号,比如STC8H8K64U、STC8051U34K64进行实验测试,您可以换用不同型号。目前测试这两个系列,显示速度均相当不错,软件设计也是极为简单。各篇文章下方均提供源码供参考下载。…...

实习随笔【前端技术实现全局添加水印】

有一些数据比较重要的项目&#xff0c;往往需要对数据进行保护措施&#xff0c;本文介绍常见策略——全局添加水印。 1、创建水印组件 <template><div class"water-mark"><div class"water-mark-content"><span class"phone&qu…...

【软件测试】编写测试用例篇

前面部分主要是编写测试用例的方法和方向&#xff0c;后面一部分是编写出具体的测试用例 目录 什么是测试用例 1.设计测试用例的万能公式 1.1.从思维出发 1.2.万能公式 1.3.弱网测试 1.4.安装与卸载测试 2.设计测试用例的方法 2.1.基于需求的设计方法 2.2.等价类 2.3…...

转型AI产品经理需要掌握的硬知识(二):AI常见概念和算法梳理

上一篇文章介绍AI产品经理能力模型&#xff0c;人工智能的发展历史&#xff0c;人工智能常见概念的结构梳理&#xff0c;也简要做了BAT人工智能的优势分析&#xff0c;感兴趣的朋友可以点击链接查看上文。转型AI产品经理需要掌握的硬知识一&#xff1a;AI产品能力框架和看待AI的…...

mysql-connector-java 8.0.33 反序列化漏洞

前言 经过与oracle官方沟通&#xff0c;在最新的mysql-connector-j 9.0.0里不存在这个问题&#xff0c;所以他们不认为这是个漏洞 不过确实&#xff0c;mysql-connector-java这个分支已经迁移到mysql-connector-j了&#xff0c;当时没注意&#xff0c;交的时候只注意了mysql-c…...

基于Faster R-CNN的安全帽目标检测

基于Faster R-CNN的安全帽目标检测项目通常旨在解决工作场所&#xff0c;特别是建筑工地的安全监管问题。这类项目使用计算机视觉技术&#xff0c;特别是深度学习中的Faster R-CNN算法&#xff0c;来自动检测工人是否正确佩戴了安全帽&#xff0c;从而确保遵守安全规定并减少事…...

linux中vim切换输入中文

linux中vim切换输入中文 遇到问题 在虚拟机linux下vim 编辑器中注释的时候无法使用中文 解决方案 Linux系统中的vim编辑器中安装中文输入法软件包 1.在终端中输入以下命令 sudo apt-get install fcitx fcitx-bin fcitx-table-wubi fcitx-table-wbpy2. 安装完成后&#xf…...

嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)

1. 项目概述 本项目旨在开发一套先进的智能工厂设备监控系统&#xff0c;集成嵌入式技术、工业通信协议和人机界面等多项技术&#xff0c;实现对工厂设备的全方位实时监控、高精度数据采集和智能化分析。该系统将显著提升工厂设备的运行效率&#xff0c;大幅降低维护成本&…...

监控易V7.6.6.15升级详解8:机房动环管理功能

随着企业IT基础设施的不断发展&#xff0c;机房动环管理成为保障系统稳定运行的关键环节。为了满足广大用户对于机房动环管理的高效、精准需求&#xff0c;监控易系统近期完成了一次重要版本升级。本次升级不仅优化了原有功能&#xff0c;还新增了一系列实用特性&#xff0c;旨…...

C++ | Leetcode C++题解之第232题用栈实现队列

题目&#xff1a; 题解&#xff1a; class MyQueue { private:stack<int> inStack, outStack;void in2out() {while (!inStack.empty()) {outStack.push(inStack.top());inStack.pop();}}public:MyQueue() {}void push(int x) {inStack.push(x);}int pop() {if (outStac…...

Git-Updates were rejected 解决

Git-Updates were rejected 解决 文章目录 1. 杂话2. 问题3. 解决3.1 拉取远程的最新版本&#xff08;AC&#xff09;3.2 解决可能的冲突3.3 提交3.4 再次推送 1. 杂话 大伙儿应该都用过Git吧&#xff0c;具体是个啥东西我就不说了哈。之前我在用git push的时候遇到了这个报错&…...

Java常用的API_02(正则表达式、爬虫)

Java正则表达式 七、正则表达式7.1 格式7.1.1 字符类注意字符类示例代码1例2 7.1.2 预定义字符预定义字符示例代码例2 7.1.3 区别总结 7.2 使用Pattern和Matcher类与直接使用String类的matches方法的区别。&#xff08;1&#xff09; 使用Pattern和Matcher类示例代码 &#xff…...

2024最新图纸加密软件Top5排行榜

“小张&#xff0c;你听说了吗&#xff1f;最近我们部门又发生了一起图纸泄露事件&#xff0c;真是让人头疼。”小李眉头紧锁&#xff0c;手中紧握着一份重要的设计图纸。 “是啊&#xff0c;这图纸可是咱们的心血&#xff0c;一旦泄露出去&#xff0c;后果不堪设想。”小张回…...

每日一练 - IEEE 802.1Q中STP协议

01 真题题目 关于设备 SWC 的上述配置说法正确的是 (多选) A.SWC 为根交换机 B.stp instance 1 priority 4096 是配置交换机在实例 1 中的优先级为 4096&#xff0c; 该优先级默认为0 C.gtp edged-port enable 该命令是启用交换机 5WC 的 Ethernet 1/0/2 为边缘端口 D.sto …...

设计模式--工厂设计模式

什么是工厂模式&#xff1f; 工厂模式是一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;但由子类决定要实例化的类是哪一个。这样&#xff0c;工厂方法模式让类的实例化延迟到子类。通过工厂方法模式&#xff0c;我们可以在不修改现有代码的情况下…...

消息队列-MQ

消息队列-MQ 1、什么是MQ?为什么要使用MQ?2、MQ有什么优缺点?3、有哪些常见的MQ实现?都有什么区别?4、MQ如何保证消息的可靠传输?消息丢了怎么办?5、如何保证消息的顺序性?6、如何解决消息队列的延时以及过期失效问题?7、消息队列满了以后该怎么处理?8、假设有几百万…...

近源渗透简介

什么是近源渗透 通过乔装、社工等方式实地物理侵入企业办公区域&#xff0c;通过其内部各种潜在攻击面&#xff08;如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等&#xff09;获得“战果”&#xff0c;最后以隐秘的方式将评估结果带出上报&#xff0c;由此证明企业安全防…...

13 IP层协议-网际控制报文协议ICMP

计算机网络资料下载&#xff1a;CSDNhttps://mp.csdn.net/mp_blog/creation/editor/140148186 为了更有效的转发IP数据报和提高交付成果的机会&#xff0c;在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP不是高层协议数…...

第一节Linux常见指令

目录 1.Linux下基本指令 ls指令 pwd 命令 cd 指令 知识点:理解树形结构 touch 指令 mkdir指令(重要) rmdir指令 && rm指令(重要) 知识点:ls file* 可以找到当前目录下任何以file开头的文件​编辑 知识点:热键 man指令()重要 补充知识点:nano cp…...

利用快马平台快速构建ccswitch功能演示原型,十分钟搞定交互界面

最近在做一个网络工具的小项目&#xff0c;需要快速验证ccswitch的核心功能原型。作为一个独立开发者&#xff0c;时间有限但又想做出像样的演示效果&#xff0c;于是尝试了InsCode(快马)平台&#xff0c;没想到十分钟就搞定了交互界面。这里分享一下我的实现思路和具体操作步骤…...

SEO_深入解读搜索引擎算法与SEO核心原理

SEO:深入解读搜索引擎算法与SEO核心原理 在互联网时代&#xff0c;如何让你的网站在搜索引擎上排名靠前&#xff0c;成为了每一个网站运营者的心头之患。搜索引擎优化&#xff08;SEO&#xff09;作为提升网站可见性的重要手段&#xff0c;背后的核心原理和搜索引擎算法的不断…...

EasyAnimateV5-7b-zh-InP与Java集成开发实战

EasyAnimateV5-7b-zh-InP与Java集成开发实战 1. 企业级视频生成需求与解决方案 现在很多企业都需要视频内容&#xff0c;电商要商品展示视频&#xff0c;教育机构要教学动画&#xff0c;营销团队要广告视频。传统视频制作成本高、周期长&#xff0c;一个简单的商品视频可能就…...

3大核心功能解析:飞秋Mac版如何实现高效局域网通信

3大核心功能解析&#xff1a;飞秋Mac版如何实现高效局域网通信 【免费下载链接】feiq 基于qt实现的mac版飞秋&#xff0c;遵循飞秋协议(飞鸽扩展协议)&#xff0c;支持多项飞秋特有功能 项目地址: https://gitcode.com/gh_mirrors/fe/feiq 还在为Mac与Windows设备间的通…...

面向 LLM 的程序设计 3:LLM-Friendly 的响应结构:扁平键、稳定字段与类型标注

在满足能力端点与确定性契约之后&#xff0c;响应长什么样仍会直接影响模型能不能「读对结果、少误解、少编造字段」。本系列继续围绕「让 AI 更好理解、更好调用」&#xff0c;讨论如何把 JSON 响应设计成对模型和后续工具链都更友好&#xff1a;键名稳定、层次尽量扁平、数组…...

HY-Motion-1.0本地部署全流程:Docker镜像快速启动教程

HY-Motion-1.0本地部署全流程&#xff1a;Docker镜像快速启动教程 1. 引言 想用简单的文字描述就能生成专业的3D角色动画吗&#xff1f;HY-Motion 1.0让这个想法变成了现实。这是一个基于先进AI技术的文本生成3D动作模型&#xff0c;只需要输入英文描述&#xff0c;就能自动生…...

【AI实战项目】项目二:语言模型构建与应用实战

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请轻击人工智能教程​​https://www.captainai.net/troubleshooter 项目背景&#xff1a; 在当今AI蓬勃发展的时代&#xff0c;语⾔模…...

OpenClaw飞书机器人配置:基于gemma-3-12b-it的对话自动化

OpenClaw飞书机器人配置&#xff1a;基于gemma-3-12b-it的对话自动化 1. 为什么选择OpenClaw飞书本地模型组合 去年我接手了一个需要频繁处理文档和数据的项目&#xff0c;每天要花3小时在飞书群聊和本地文件之间来回切换。尝试过各种自动化工具后&#xff0c;最终选择了Open…...

TypeScript类型安全进阶:Readonly和Required在状态管理中的妙用

TypeScript类型安全进阶&#xff1a;Readonly和Required在状态管理中的妙用 状态管理是现代前端开发中不可或缺的一环&#xff0c;而TypeScript的类型系统为我们提供了强大的工具来确保状态的安全性。在Redux、MobX等流行状态管理库中&#xff0c;Readonly和Required这两个工具…...

嵌入式通信协议:UART、SPI、I2C原理与应用

1. 嵌入式通信协议基础概述在嵌入式系统开发中&#xff0c;各种通信协议就像设备之间的"语言"&#xff0c;决定了数据如何在不同模块间传递。作为一名嵌入式工程师&#xff0c;我经常需要在项目中根据具体需求选择合适的通信方式。UART、SPI、I2C这三种串行通信协议可…...