锁屏面试题百日百刷-Hive篇(八)

news2024/11/26 18:20:19

   锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:

 

1.Hive 中的压缩格式TextFile、SequenceFile、RCfile 、ORCfile各有什么区别?

1. TextFile

默认格式,存储方式为行存储,数据不做压缩,磁盘开销大,数据解析开销大。 可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,压缩后的文件不支持split,Hive不会对数据进行切分,从而无法对数据进行并行操作。并且在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比SequenceFile高几十倍。

2. SequenceFile

SequenceFile是Hadoop API提供的一种二进制文件支持,,存储方式为行存储,其具有使用方便、可分割、可压缩的特点。

SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。优势是文件和hadoop api中的MapFile是相互兼容的

3. RCFile

存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点:

首先,RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低;

其次,像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取;

RCFile的一个行组包括三个部分:

第一部分是行组头部的【同步标识】,主要用于分隔 hdfs 块中的两个连续行组

第二部分是行组的【元数据头部】,用于存储行组单元的信息,包括行组中的记录数、每个列的字节数、列中每个域的字节数

第三部分是【表格数据段】,即实际的列存储数据。在该部分中,同一列的所有域顺序存储。

从图可以看出,首先存储了列 A 的所有域,然后存储列 B 的所有域等。

数据追加:RCFile 不支持任意方式的数据写操作,仅提供一种追加接口,这是因为底层的 HDFS当前仅仅支持数据追加写文件尾部。

行组大小:行组变大有助于提高数据压缩的效率,但是可能会损害数据的读取性能,因为这样增加了 Lazy 解压性能的消耗。而且行组变大会占用更多的内存,这会影响并发执行的其他MR作业。考虑到存储空间和查询效率两个方面,Facebook 选择 4MB 作为默认的行组大小,当然也允许用户自行选择参数进行配置。

4. ORCFile

存储方式:数据按行分块 每块按照列存储。

压缩快 快速列存取。

效率比rcfile高,是rcfile的改良版本

以下为RCFile、TextFile、SequenceFile三种文件的存储情况:

[hadoop@master ~]$ hadoop dfs -dus /user/Hive/warehouse/* hdfs://master :9000/user/Hive/warehouse/hbase_table_1 0

hdfs://master :9000/user/Hive/warehouse/hbase_table_2 0

hdfs://master :9000/user/Hive/warehouse/orcfile_table 0

hdfs://master :9000/user/Hive/warehouse/rcfile_table 102638073

hdfs://master :9000/user/Hive/warehouse/seqfile_table 112497695

hdfs://master :9000/user/Hive/warehouse/testfile_table 536799616

hdfs://master :9000/user/Hive/warehouse/textfile_table 107308067

[hadoop@singlehadoop ~]$ hadoop dfs -ls /user/Hive/warehouse/*/ -rw-r--r-- 2 hadoop supergroup 51328177 2021-03-20 00:42 /user/Hive/warehouse/rcfile_table/000000_0

-rw-r--r-- 2 hadoop supergroup 51309896 2021-03-20 00:43 /user/Hive/warehouse/rcfile_table/000001_0

-rw-r--r-- 2 hadoop supergroup 56263711 2021-03-20 01:20 /user/Hive/warehouse/seqfile_table/000000_0

-rw-r--r-- 2 hadoop supergroup 56233984 2021-03-20 01:21 /user/Hive/warehouse/seqfile_table/000001_0

-rw-r--r-- 2 hadoop supergroup 536799616 2021-03-19 23:15 /user/Hive/warehouse/testfile_table/weibo.txt -rw-r--r-- 2 hadoop supergroup 53659758 2021-03-19 23:24 /user/Hive/warehouse/textfile_table/000000_0.gz

-rw-r--r-- 2 hadoop supergroup 53648309 2021-03-19 23:26 /user/Hive/warehouse/textfile_table/000001_1.gz

总结:相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。

数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。

2.Hive join过程中大表小表的放置顺序?

将最大的表放置在JOIN语句的最右边,或者直接使用/*+ streamtable(table_name) */指出。在编写带有 join 操作的代码语句时,应该将条目少的表/子查询放在 Join 操作符的左边。因为在 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,载入条目较少的表可以有效减少 OOM(out of memory)即内存溢出。所以对于同一个 key 来说,对应的 value 值小的放前,大的放后,这便是“小表放前”原则。若一条语句中有多个 Join,依据 Join 的条件相同与否,有不同的处理方法。

3.Hive的两张表关联,使用MapReduce怎么实现

如果其中有一张表为小表,直接使用map端join的方式(map端加载小表)进行聚合。

如果两张都是大表,那么采用联合key,联合key的第一个组成部分是join on中的公共字段,第二部分是一个flag,0代表表A,1代表表B,由此让Reduce区分客户信息和订单信息;在Mapper中同时处理两张表的信息,将join on公共字段相同的数据划分到同一个分区中,进而传递到一个Reduce中,然后在Reduce中实现聚合。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gitblit 安装使用

1 安装服务端 简而言之:需要安装 java,gitblit, git 三个软件 Windows 10环境使用Gitblit搭建局域网Git服务器 前言 安装Java并配置环境安装gitblit并配置启动gitblit为windows服务使用gitblit创建repository并管理用户 1.1 安装Java并配…

[Java·算法·中等]LeetCode215. 数组中的第K个最大元素

每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3👉️ 力扣原文 题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不…

REFL: 联邦学习中智能的设备选择方法

原创 齐天宇 隐私计算研习社 收录于合集#联邦学习54个现有的FL方案使用随机的参与者选择来提高选择过程的公平性,但是这会导致资源的低效利用和较低的训练质量。本文系统地解决了FL中资源效率低效的问题,展示了智能参与者选择和合并来自落后参与者的更新…

React-高阶组件

认识高级组件 高阶函数的维基百科定义:至少满足以下条件之一 1、接受一个或多个函数作为输入; 2、输出一个函数; JavaScript中比较常见的 filter、map、reduce 都是高阶函数 那么说明是高阶组件呢? 高阶组件的英文是 Higher-Order Components,简称为 HOC;官方的…

2023年如何通过软考初级程序员?

初级的考试难度不大,稍微有点编程基础,认真备考应该没什么大问题。 先清楚大纲: 高效备考!理清考点,针对性复习 科目一:综合知识 75道单项选择题,1题1分,时长150分钟;…

Qt 防止程序退出

文章目录摘要QWidgetQML方法 1方法 2关键字: Qt、 eventFilter、 Close、 键盘、 任务管理器摘要 今天要聊得内容还是怎么防止别人关闭我的程序,之前都是在win下面,一般都是用过钩子连捕获键盘事件,完了吧对应的事件忽略&#x…

面了 6 家大厂,并拿下 5 家 offer,进大厂好像也没有那么困难吧....

前言 二月份的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal 的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了 Offer。 最近时间稍微宽裕点了,写个面经&#xf…

1.测试用例

一、测试用例怎么写 用例编号,用例标题,模块/项目,前置条件,优先级,测试步骤,测试数据,预期结果,实际结果。 案例:微信登陆测试点 1.登录成功 2.密码错误,登…

安卓性能测试+结果可视化

使用到的技术:mobileperfpyecharts或mobileperfgrafana 性能测试 GitHub - alibaba/mobileperf: Android performance testAndroid performance test. Contribute to alibaba/mobileperf development by creating an account on GitHub.https://github.com/alibab…

Linux: ARM GIC仅中断CPU 0问题分析

文章目录1. 前言2. 分析背景3. 问题4. 分析4.1 ARM GIC 中断芯片简介4.1.1 中断类型和分布4.1.2 拓扑结构4.2 问题根因4.2.1 设置GIC SPI中断的CPU亲和性4.2.2 GIC初始化:缺省的CPU亲和性4.2.2.1 boot CPU亲和性初始化流程4.2.2.1 其它非 boot CPU亲和性初始化流程5…

KT404C语音芯片串口发数据没反应或者报错的处理总结

一、问题简介 KT404C我焊接到PCB板上面,直接使用串口调试助手发指令没有任何返回,请问是什么意思呢? 很确定,串口也没连错,使用的是CH340G的USB转TTL ,【TX连接KT404C的7脚RX】 【RX连接KT404C的8脚TX】 二…

Python常用标准库-os库一文详解(二):文件操作和路径操作

目录 前言 文件操作 一、读写文件 1.读文件 2.写文件 二、创建文件 三、删除文件 四、重命名文件 五、文件判断 路径操作 1.拼接 2. 分离路径 3.获取路径中的文件名 4.获取路径中的路径名 5.获取绝对路径 6.分离文件拓展名 点关注,防走丢&#xff…

CEC2020:能量谷优化算法(Energy valley optimizer,EVO)求解CEC2020(提供MATLAB代码)

一、能量谷优化算法 能量谷优化算法(Energy valley optimizer,EVO)是MahdiAzizi等人于2023年提出的一种新颖的元启发式算法,其灵感来自关于稳定性和不同粒子衰变模式的物理原理。 物理反应是指两个粒子或外部亚原子粒子碰撞产生新…

【matplotlib】可视化解决方案——如何向画布添加交叉直线

概述 在 matplotlib 中,如果想要在画布上添加一组横纵较差的直线,需要使用到 Cursor 类,该类实现了图形化界面中任何位置的数值定位可视化某种意义上来讲,这种横纵交叉线类似数值放大镜,可以清楚地显示任何位置的坐标…

以图搜图服务快速搭建

以图搜图服务快速搭建 电商公司,管理的商品少则几千,多则上百万。如何帮助用户从多如牛毛的商品中找到类似的商品就成了问题。 以图搜图就可以很好的帮助解决这个问题,通过 Towhee(resnet50 模型) Milvus 如何实现本…

Linux常用命令——lsusb命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) lsusb 显示本机的USB设备列表信息 补充说明 lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。 lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用…

深信服面经---云计算方向(附问题知识点解析)

深信服面经---云计算高级开发一、一面问题概览二、实操相关三、复盘对问题答案进行整理(查漏补缺)3.1、go语言简单了解3.2、项目中成就感最大或挑战最大的地方3.3、项目问题---协议头引入之后,包的大小增加了多少3.4、如何建立缓存3.5、cache…

STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…

“一键转换图片:学习如何使用Python调整大小、增强和转换图片!“

目录 简介: 源代码: 代码说明: 效果如图所示: 有关其中用到的Pillow模块: 简介: 在这个世界上,图片处理已经成为了必须掌握的技能之一,无论是为了更好地展示产品,还是…

C++ Primer Plus 第6版 读书笔记(4) 第4章 复合类型

目录 4.1 数组 4.2 字符串 4.3 string 类简介 4.3.4 string 类 I/O 4.4结构简介 4.5 共用体 4.6 枚举 4.7 指针和自由存储空间 4.8 指针、数组和指针算术 4.8.1 程序说明 4.8.2指针小结 4.8.5 自动存储、静态存储和动态存储 4.9 类型组合 4.10 数组的替代…