2023.8.8巨人网络数据开发工程师面试复盘

news2024/11/24 8:32:03

1 概述 问题一览

总体感觉良好,通过面试官的介绍可知这个岗位偏向离线数仓。

1.自我介绍
2.询问了其中一段实习经历
3.讲下你说用过的Linux命令
4.讲下HIVE的内部表和外部表有什么不同
*5.讲下你使用过的Hive函数(好好在复习下多准备几个吧)
*6.请讲下维度建模和范式建模的区别(自上而下,自底而上,关系-实体,事实-维度)
*7.为什么关系型数据库更适合范式建模而数仓适合维度建模
8.讲下数据倾斜
*9.HIVE的分区和分桶(分区是放在不同目录下,分桶是放在不同文件中)
10.什么是Hive-on-mr什么是Hive-on-spark
11.又问了简历的另一段实习经历
*12.复述下你曾经做过的一个数据科学的项目,你做了多少,是不是你一个人做的(这个问题失误在于,没有挑典型项目讲,现在要准备下稿子)
12.这个岗位是实习岗,不会影响你秋招吗
12.经典的反问环节

2 题目总结

2.1 讲下HIVE的内部表和外部表有什么不同

  1. 未被external修饰的是内部表,被external修饰的为外部表。
  2. 内部表数据由Hive自身管理,外部表数据由HDFS管理;
  3. 内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse), 外部表数据的存储位置由自己设置;
  4. 删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除。

2.2 讲下你使用过的Hive函数

HIVE 常用函数总结https://www.zhihu.com/tardis/zm/art/102502175?source_id=1005

  1. 向下取整函数: floor
  2. 指定精度取整函数: round 
  3. 向上取整函数: ceil 
  4. 取随机数函数: rand 
  5. 绝对值函数: abs
  6. 日期转年函数: year 
  7. 日期转月函数: month
  8. 日期转天函数: day 

2.3 请讲下维度建模和范式建模的区别

数据仓库的两种建模方法(范式建模和维度建模)_数据仓库 数据建模_Happybigman的博客-CSDN博客数据仓库的两种建模方法范式建模Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原子数据的数据仓库EDW,EDW不是多维格式的,不方便上层应用做数据分析,所以需要通过汇总建设成多维格式的数据集市层。优势:易于维护,高度集成;劣势:结构死板,部署周期较长范式建模应用在EDW层..._数据仓库 数据建模https://blog.csdn.net/baidu_20183817/article/details/104991764

2.4 为什么关系型数据库更适合范式建模而数仓适合维度建模

范式建模的优缺点

优点

  1. 节约存储(尤其是利用数据库进行数仓建设的时候)
  2. 规范化带来的好处是通过减少数据冗余提高更新数据的效率,同时保证数据完整性。
  3. 结构清晰,易于理解

缺点

  1. 构建比较复杂
  2. 查询复杂(需要很多的关联)
  3. 不适合在大数据环境下构建因为两点:1 查询复杂  2 存储很便宜

总结:由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求。

2.5 讲下数据倾斜

  • 空值引发的数据倾斜
    解决方案:
    第一种:可以直接不让null值参与join操作,即不让null值有shuffle第二种:因为null值参与shuffle时的hash结果是一样的,那么我们可以给null值随机赋值,这样它们的hash结果就不一样,就会进到不同的reduce中
  • 不同数据类型引发的数据倾斜
    解决方案:
    如果key字段既有string类型也有int类型,默认的hash就都会按int类型来分配,那我们直接把int类型都转为string就好了,这样key字段都为string,hash时就按照string类型分配了
  • 不可拆分大文件引发的数据倾斜
    解决方案:
    这种数据倾斜问题没有什么好的解决方案,只能将使用GZIP压缩等不支持文件分割的文件转为bzip和zip等支持文件分割的压缩方式。
    所以,我们在对文件进行压缩时,为避免因不可拆分大文件而引发数据读取的倾斜,在数据压缩的时候可以采用bzip2和Zip等支持文件分割的压缩算法。
  • 数据膨胀引发的数据倾斜
    解决方案:
    在Hive中可以通过参数 hive.new.job.grouping.set.cardinality 配置的方式自动控制作业的拆解,该参数默认值是30。表示针对grouping sets/rollups/cubes这类多维聚合的操作,如果最后拆解的键组合大于该值,会启用新的任务去处理大于该值之外的组合。如果在处理数据时,某个分组聚合的列有较大的倾斜,可以适当调小该值。
  • 表连接时引发的数据倾斜
    解决方案:
    通常做法是将倾斜的数据存到分布式缓存中,分发到各个Map任务所在节点。在Map阶段完成join操作,即MapJoin,这避免了 Shuffle,从而避免了数据倾斜。
  • 其他情况引发的数据倾斜
    解决方案:
    这类问题最直接的方式就是调整reduce所执行的内存大小。
    调整reduce的内存大小使用mapreduce.reduce.memory.mb这个配置。

2.6 HIVE的分区和分桶的区别

  • 分区是按照分区字段在HDFS上建立子文件夹,分区内的数据存放在子文件夹内,查询时不需要全局扫描,只扫描对应分区文件夹的数据。

  • 而分桶是按分桶字段对数据取hash值,值相同的放在同一个分桶文件里,分桶生成的是分桶文件,分区对应的是子文件夹。

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

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

相关文章

魔棒:手机智能无人直播软件多少钱?

无人直播因为直播门槛低,不需要真人出镜,不需要请主播,加上可以24小时直播卖券,效果出奇的好,一时很受广大商家的欢迎,那么,这种ai智能无人直播软件究竟多少钱呢? 当然&#xff0c…

nginx反向代理后实现nginx和apache两种web服务器能够记录客户端的真实IP地址

一.构建环境 二.配置反向代理 1.基于源码安装的nginx环境下修改nginx.conf(设备1) 2.通过windows powershell进行修改hosts文件并测试 3.设备2和设备3上查看日志,可以看到访问来源都是代理服务器(2.190)而不是真实…

渗透测试-SQL注入原理

文章目录 sql注入原理sql注入基本流程判断是否存在注入,是否会将用户输入拼接到sql语句,并当做代码执行判断字段数判断显错位判断库名判断表名判断列名判断具体数据 sql注入原理 sql注入基本流程 判断是否存在注入,是否会将用户输入拼接到sql…

leetcode 322. 零钱兑换

本题属于完全背包问题,但要求最少的硬币个数。于是设定dp数组的含义dp[i]:总金额为i时,能凑成i的最少硬币个数。 需要注意初始化dp数组时,除0以外的其他地方需要初始化为INT_MAX以保证在递推过程中能被正确的覆盖。 代码如下: …

shell的两种属性: 交互(interactive)与登录(login)

1. 背景 在看shell变量的时候引起了兴趣: 局部变量,全局变量,环境变量,shell的配置文件,参考博客: http://c.biancheng.net/view/773.html 2. 交互式与非交互式 参考博客: shell的两个属性:是否交互式(interactive), 是否登录…

Android---- 一个完整的小项目(消防app)

前言: 针对不同群体的需求,想着应该拓展写方向。医疗app很受大家喜欢,就打算顺手写个消防app,里面基础框架还是挺简洁 规整的。登陆注册和本地数据库写的便于大家理解。是广大学子的毕设首选啊! 此app主要为了传递 消防…

vue3中将表格导出excel的方法(极简且有效)

🥰博主:小猫娃来啦 🥰文章核心:vue2或vue3中将表格导出excel的通用方法 文章目录 安装依赖,导入模块需要注意的完整导出代码原理效果 安装依赖,导入模块 安装 npm i xlsx 或者 pnpm i xlsx导入 import *…

图片转换pdf怎么转换?这几种方法很好用

图片转换pdf怎么转换?将图片转换为pdf可以使你更方便地分享和存储文件。相比于图片格式,pdf格式更加通用,可以在不同的设备和操作系统上打开和查看。此外,pdf格式还可以更好地保护你的文件,可以设置密码保护和防止复制…

vue3 基础知识(webpack) 02

你好,今天过的怎么样呀,嘿嘿,加油夏 💕 文章目录 一、组件二、如何支持SFC三、webpack 打包工具 一、组件 使用组件中我们可以获得非常多的特性: 代码的高亮;ES6、CommonJS的模块化能力;组件作…

WPF的CheckBox中的三个状态

WPF的CheckBox中的三个状态 CheckBox控件和RadioButton控件是继承自ToggleButton类,这意味着用户可切换他们的开关状态,其中IsChecked属性是可空的Boolean类型,这意味着该属性可以设置为true,false或null。 null值表示不确定状态…

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN-BiGRU-Attention多特征分类预测,多特征输入模型&…

看完尤雨溪知乎343条回答,我学到了这些!

最近看完了尤雨溪的知乎 343 条回答和 25 篇文章,记录下一些内容(每条仅摘录部分内容),分享给大家! 怎么才能有尤雨溪一半强,该怎么学习? 我更愿意把 “强” 理解为 “制造 impact 的能力”&a…

如何在vue3中封装并使用echarts组件

一. 安装echarts npm install echarts --save 二. 按需加载创建一个echarts文件夹,并创建配置文件 //引入echarts import * as echarts from echarts/core//引入柱状图,折线图 import { BarChart, LineChart } from echarts/charts// 引入提示框&#x…

论文及代码详解——可变形卷积(DCNv1)

文章目录 论文详解Deformable ConvolutionDeformable RoI PoolingDeformable ConvNetsUnderstanding Deformable ConvNets 代码详解 论文:《Deformable Convolutional Networks》 论文详解 Deformable Convolution 普通卷积的数学表达 普通的二维卷积包括两个步骤:…

小知识积累

1、使用JSON.parse(JSON.stringify()) 深拷贝时会出现的问题 var obj {a: "zs",b: undefined,c: Symbol("score"),d: null,e: function () {console.log("show");},};console.log(JSON.parse(JSON.stringify(obj)));很明显undefined、函数、sym…

Netty+springboot开发即时通讯系统笔记(三)

实现长连接负载均衡策略 登录成功返回登陆的im地址。 1.在公共模块里写个RouteHandle接口,然后他的实现类去实现不同的均衡策略。 2.在业务模块的config文件下的beanConfig中定义一个Bean routeHandle,从配置文件中获取不同的负载均衡策略来初始化Rou…

苹果电脑会自动清理垃圾吗 苹果电脑系统垃圾怎么清除

苹果电脑是很多人喜欢使用的一种电脑,它有着优美的外观,流畅的操作系统,丰富的应用程序和高效的性能。但是,随着时间的推移,苹果电脑也会产生一些不必要的文件和数据,这些文件和数据就是我们常说的垃圾。那…

半导体退火那些事(2)

2.半导体退火的作用 2.1改善半导体的电学性能 退火过程中,材料中的缺陷得到修理,杂质原子和材料内的杙错得到排列,位于能带中动力学的载流子少,能级也就相对于更加密集。因而在退火之后,半导体材料中的电子、空穴浓度…

RabiitMq-4工作队列/消息应答

1.工作队列 工作机制类似一个生产者,多个消费者。工作队列采用轮训的机制,即工作线程一次只能处理一个消息,轮流处理 公共方法 public class MqUtiles {public static final String QUEUE_NAME"hello";public static Channel fu…

预防SQL漏洞注入和规避网络攻击

前言: 虽然近些年SQL注入已经被各类的安全开发框架规避了绝大部分,但SQL注入作为一种最原始的攻击手段之一,破坏力仍然十分强大,因为它直捣黄龙数据中心。所以未雨绸缪,各位不可不重视。 预防SQL注入方法措施: 服务器…