首页 > 其他分享 >HIVE面试题

HIVE面试题

时间:2024-07-10 12:29:50浏览次数:8  
标签:map 面试题 set join -- hive HIVE true

HIVE 优化:

场景1. 分组聚合group by 导致数据倾斜 -- map端聚合 :
aggr=true

  1. 会在mapper端先group by一次,最后再把结果merge起来,为了减少reducer处理的数据量
  2. 指令: Set hive.groupby.mapaggr.checkinterval=1000000
    Set hive.map.aggr = true
    set hive.groupby.skewindata=true; --启用分组聚合数据倾斜优化

场景2. 大表和小表join 导致的数据倾斜. 将小表广播到内存中不进行shuffle

  --启用map join自动转换
  set hive.auto.convert.join=true;

场景3. 两张大表 join 发生数据倾斜[SMB JOIN]
使用分桶表,并且开启SMB Join (Sort Merge Bucket Join)
set hive.optimize.bucketmapjoin = true;
set hive.optimize.bucketmapjoin.sortedmerge = true;
set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat;

	关联键空值很多情况

SELECT ...
FROM (
SELECT *
FROM tbl1
WHERE ds = '${cur_date}'
) a
LEFT OUTER JOIN (
SELECT *
FROM tbl1
WHERE ds = '${cur_date}'
) b
ON coalesce(a.id,rand() * 9999) = b.id -- 通过coalesce对空值进行随机分发,避免聚集

场景4. 小文件合并优化
合并Map端输入的小文件,是指将多个小文件划分到一个切片中,进而由一个Map Task去处理。目的是防止为单个小文件启动一个Map Task,浪费计算资源。

  --可将多个小文件切片,合并为一个切片,进而由一个map任务处理
  set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 

标签:map,面试题,set,join,--,hive,HIVE,true
From: https://www.cnblogs.com/mengbin0546/p/18293761

相关文章

  • Redis面试题
    Redis面试题一、Redis缓存1、缓存预热、缓存穿透、缓存雪崩、缓存击穿2、redis作为缓存,MySQL的数据如何与缓存进行同步(保证双写一致性)3、redis作为缓存,如何持久化数据?4、redis的key过期后会立即删除吗?(redis的数据过期策略)5、假如缓存过多,内存有限,被占满了怎么办?(redis的数......
  • 面试题目分享
    学习目标:从面试了解自己的不足。学习内容:1.你会什么语言?我该如何回答,我会java,c,c++等,在工作中我会用到合适的语言。牛逼吹的大话尊敬的面试官,我精通Java和Python,前者用于企业级后端开发,后者擅长数据分析。我也熟悉前端JavaScript/TypeScript和React。具备跨语言学习......
  • iOS面试题:tableivew上面展示图片的时候,在网络还未回来时,将cell滑走,那被划走的cell还会
    当在UITableViewCell中加载网络图片时,如果在图片下载完成之前用户滑动了UITableView,使得对应的UITableViewCell已经滑出屏幕,那么这个被滑走的UITableViewCell是否还会显示图片,取决于如何处理图片的加载和UITableViewCell的重用。UITableView的重用机制这篇文章写了相关知识图片......
  • Android面试题之Activity的启动模式和flag
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点Activity中的几种启动模式activity的几种启动模式是android中常考的知识点,一般会考察有哪几种启动模式,以及每种启动模式在什么场景下使用:standard:这个是android......
  • LeetCode 面试题 17.05. 字母与数字
    面试题17.05.字母与数字给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。示例1:输入:["A","1","B","C","D","2","3","4","E","5&q......
  • 面试题整理
    现在给你三百台服务器,你怎么对他们进行管理?管理3百台服务器的方式:1)设定跳板机,使用统一账号登录,便于安全与登录的考量。2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各......
  • 经典C语言笔试面试题目
    01.请填写bool,float,指针变量与“零值”比较的if语句。提示:这里“零值”可以是0,0.0,FALSE或者“空指针”。例如intn与“零值”比较的if语句为:if(n==0)if(n!=0)以此类推。请写出boolflag与“零值”比较的if语句:if(flag){}if(!fl......
  • SVN 80道面试题及参考答案(2万字长文)
    目录解释SVN的全称和主要功能。SVN与CVS相比,有哪些主要改进?描述SVN的工作流程。什么是版本库(repository)?它存储了什么?解释工作副本(workingcopy)的概念。SVN如何处理文件的版本控制?SVN中的“commit”是什么意思?解释“update”操作的作用。如何查看一个文件的历史版......
  • 那些年背过的面试题——JVM篇
    本文是技术人面试系列JVM篇,面试中关于JVM都需要了解哪些基础?一文带你详细了解,欢迎收藏!JVM内存划分1、JVM运行时数据区域堆、方法区(元空间)、虚拟机栈、本地方法栈、程序计数器。Heap(堆):对象的实例以及数组的内存都是要在堆上进行分配的,堆是线程共享的一块区域,用......
  • Python面试题-8
    41.请解释Python中的切片操作。在Python中,切片(Slicing)是一种获取序列(如字符串、列表、元组等)的子集或部分的操作。切片操作使用方括号[],并且可以在方括号中指定开始索引、结束索引和步长。其基本语法如下:sequence[start:end:step]start是切片开始的索引,默认为0(序列的......