前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法岗机器学习相关问题整理(大数据部分)

算法岗机器学习相关问题整理(大数据部分)

作者头像
曲奇
发布2021-12-14 19:49:20
4960
发布2021-12-14 19:49:20
举报
文章被收录于专栏:曲奇的博客曲奇的博客

目录

简要说说map reduce

详细说一下Hadoop map reduce的流程

简要介绍下hive

什么是数据仓库

Hive的使用场景

Hive的构成包括哪些部分?

数据倾斜介绍,原因与解决办法spark运行流程

flink checkpoint和savepoint的区别

Flink 的 Exactly Once 语义怎么保证

udf,udaf,udtf的区别

搜索

query匹配检索

大数据部分

简要说说map reduce

MapReduce是apache公司开发的,基于该框架能够使应用程序能够运行在大规模集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。MapReduce的思想就是“分而治之”,Mapper负责“分”,即把复杂的任务分解为若干个“简单的任务”来处理;Reducer负责对map阶段的结果进行汇总。

参考

From https://cloud.tencent.com/developer/article/1492346

详细说一下Hadoop map reduce的流程

client提交数据到DFS,然后被分为多个split,然后通过input formatter以key-value传给jobTracker,jobtracker分配工作给多个map,也就是task tracker,工程师根据业务重写map,在各个taskTracker上分别执行代码任务。执行完之后,将结果进行shuffle,传给reduce,最后把结果汇聚输出。

参考:

https://blog.csdn.net/AC_great/article/details/47870331 Hadoop,MapReduce,HDFS面试题

简要介绍下hive

从概念上讲,Hive是一款开源的基于hadoop的用于统计海量结构化数据的一个数据仓库,它定义了简单的类似SQL的查询语言,称为HQL,允许熟悉SQL的用户查询数据。 从本质上讲:Hive是将HQL语句转换成MapReduce程序的一个工具。

上题的回答提到了数据仓库和MapReduce,考官可以针对你的回答,进而提问数据仓库和MapReduce相关的知识点。

参考:https://cloud.tencent.com/developer/article/1492346 大数据面试集锦

什么是数据仓库

数据仓库是一个面向主题的(如用户、成本、商品等业务主题)、集成的(可以汇总不同源数据库的数据)、反映历史变化(对操作型数据库进行汇总统计)的数据集合,用于支持管理决策(Decision Making Support)。

参考:

https://cloud.tencent.com/developer/article/1492346

Hive的使用场景

1.ad hoc查询:可以对Hive中的数据ad hoc查询,也就是由用户自定义查询条件,也方便进行ETL,如果底层的引擎使用的是MapReduce耗时会很久,可以换成Spark;

2.离线的数据分析:通过执行定时调度或者脚本去执行HQL语句,并将结果保存;

3.构建数仓时用于组织管理数据库和表。

参考:

https://cloud.tencent.com/developer/article/1492346

Hive的构成包括哪些部分?

主要分为三个部分:

  1. 用户接口层

常用的三个分别是CLI命令行接口,JDBC/ODBC 和 WebUI。其中最常用的是CLI,CLI启动的时候,会同时启动一个Hive副本。JDBC/ODBC是Hive的客户端,用户通过客户端连接至Hive Server。在启动客户端模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。WUI是通过浏览器访问Hive。

2. 元数据存储

Hive将元数据存储(表名,字段信息等)在RDBMS中,有三种模式可以连接到数据库,分别是内嵌式元存储服务器、本地元存储服务器、远程元存储服务器。

3. Driver(Compiler/Optimizer/Executor)

Driver完成HQL查询语句的词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS上,并由MapReduce调用执行。

参考

From https://cloud.tencent.com/developer/article/1492346

数据倾斜介绍,原因与解决办法

在执行shuffle操作时,是按照key来进行数据的输出、拉拢和聚合。同一个key的values,是分配到同一个reduce task中。如果某个key对应的数据比另外一个key对应的数据量大很多,这时候就发生了数据倾斜。对运算时间很长,对机器也不好。

原因:

  1. key对应的value分布不均匀
  2. 数据本身的特性,比如按日期进行分区,如果在特定日期数据量激增。
  3. 建表时考虑不周,分区设置过少
  4. 一些HQL操作如join比较容易产生数据倾斜,比如表里的key集中(比如0值和空值多)。groupby操作某个值得量太大,count distinct。

解决方法:

  1. 抽样和原始分区:对原始数进行抽样,来预设分区边界值。totalOrderPartition
  2. 自定义分区:把比较集中的key分开到几个不同的分区
  3. 进行combine:放粗粒度(改数据),把本来多个key的数据聚集起来,减小数据量。
  4. 提高shuffle操作的reduce并行度:增加reduce task数量,相当于每个task数据量稀释了。
  5. Reduce join变为map join:reduce join是把相同的key汇聚到一个task中,再进行join。Map join先不按key去分,而是把小的RDD广播到每个excutor中。

参考:

https://zhuanlan.zhihu.com/p/64240857 数据倾斜面试

spark运行流程

1、构建Spark Application的运行环境,启动SparkContext

2、SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend。

3、Executor向SparkContext申请Task。SparkContext将应用程序分发给Executor。

4、SparkContext构建成DAG图(有向无环图,描述依赖关系),将DAG图分解成Stage(根据依赖关系,宽依赖指的是多个子RDD的Partition会依赖同一个父RDD,宽依赖是一个stage)、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行。

5、Task在Executor上运行,运行完释放所有资源。

参考:

From https://zhuanlan.zhihu.com/p/76518708

flink checkpoint和savepoint的区别

参考:

http://wuchong.me/blog/2018/11/25/flink-tips-differences-between-savepoints-and-checkpoints/

Flink 的 Exactly Once 语义怎么保证

对于一条message,receiver确保只收到一次 flink每一个操作都有记录状态,只有sink操作完成,才调整kafka偏移量,不会再重发。

幂等性data sink:幂等性可以多次执行,但只会引起一次改变

Two-phase commit data sink:写入接收系统但先不提交,直到checkpoint完成通知后,才真正写入结果

udf,udaf,udtf的区别

Hive中有三种UDF:

1、用户定义函数(user-defined function)UDF;

2、用户定义聚集函数(user-defined aggregate function,UDAF)

3、用户定义表生成函数(user-defined table-generating function,UDTF)

UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。

UDAF 接受多个输入数据行,并产生一个输出数据行。像COUNT和MAX这样的函数就是聚集函数。

UDTF 操作作用于单个数据行,并且产生多个数据行-------一个表作为输出。

简单来说:

UDF:返回对应值,一对一 | UDAF:返回聚类值,多对一 | UDTF:返回拆分值,一对多

搜索

query匹配检索

问了个给一个query,怎么找相关的文章。匹配和检索算法。都有哪些方法。https://www.nowcoder.com/discuss/213960

还不会。。。。

learning2rank

pointwise pairwise listwise

参考:

https://blog.csdn.net/lipengcn/article/details/85313971

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 大数据部分
  • 简要说说map reduce
  • 详细说一下Hadoop map reduce的流程
  • 简要介绍下hive
  • 什么是数据仓库
  • Hive的使用场景
  • Hive的构成包括哪些部分?
  • 数据倾斜介绍,原因与解决办法
  • spark运行流程
  • flink checkpoint和savepoint的区别
  • Flink 的 Exactly Once 语义怎么保证
  • udf,udaf,udtf的区别
  • 搜索
  • query匹配检索
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档