网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
教育数仓项目介绍
项目背景:受互联网+概念,疫情影响,在线教育,K12教育等发展火热,越来越多的平台机构涌现。但是由于信息的共享利用不充分,导致企业多年积累了大量数据,而因为信息孤岛的问题,一直没有对这些数据进一步挖掘分析,因此也不能给企业的管理决策层提供有效的数据支撑。
项目价值:我们做的这个教育大数据分析平台项目,将大数据技术应用于教育行业,用擅长分析的OLAP系统为企业经营提供数据支撑。
实现思路:建立企业的数据仓库,把分散的业务数据预处理,其次根据业务需求从海量的用户行为数据挖掘分析,定制出多维的数据集合,形成数据集市,供各个场景主题使用,最后用BI工具,进行前端展示。
技术架构:mysql,sqoop,基于CM的Hive,Oozie和FineBi。由于OLTP系统中数据大多存储在mysql,所以我们最终选择Sqoop作为导入导出工具,抽取数据到数仓,并使用基于CM管理的Hive进行数据清洗+分析,然后sqoop导出到mysql,最后用FineBI展示OLAP的数据分析结果。
三大痛点:一是数据量太大问题,传统数据库无法满足;二是系统多,数据分散问题,无法解决数据孤岛问题;三是,统计工作量太大,分析难度高问题,无法及时为企业提供数据参考。
物流数仓项目介绍
项目背景:本项目基于一家大型物流公司研发的智慧物流大数据平台。该物流公司是国内综合性快递、物流服务商,并在全国各地都有覆盖的网点。
业务规模:经过多年的积累、经营以及布局,拥有大规模的客户群,日订单达 上千万。如此规模的业务数据量,传统的数据处理技术已经不能满足企业的经营分析需求。
项目价值:公司需要基于大数据技术构建数据中心,从而挖掘出隐藏在数据背后的信息价值,为企业提供有益的帮助,带来更大的利润和商机。
项目细节:
物流环节:大数据项目主要围绕订单、运输、仓储、搬运装卸、包装以及流通加工等物流环节中 涉及的数据、信息等。
指导方向:通过大数据分析可以提高运输以及配送效率、减少物流成本、更有效地满足客户 服务要求,实现快速、高效、经济的物流,并针对数据分析结果,提出具有中观指导意义的解决方案。
应用案例:针对物流行业的特性,大数据应用主要体现在车货匹配、运输路线优化、库存预测、设备修理预测、供应链协同管理等方面。
针对以上的物流企业痛点,我们给出对应的大数据架构解决方案:
数据源:关系型数据库Oracle和MySQL
采集:OGG和Canal分别将Oracle和MySQL的增量数据同步到Kafka集群存储:ETL计算之后分别存储到kudu,Elasticsearch,ClickHouse中
计算引擎:处理数据使用StructuredStreaming
技术亮点:
该项目具有完整Lambda 架构系统,有离线业务、也有实时业务
ClickHouse实时存储、计算引擎Kudu + Impala准实时分析系统
以企业主流的Spark生态圈为核心技术,例如:Spark、Spark SQL、structured Streaming Elasticsearch 全文检索
SpringCloud 搭建数据服务
面试过程
1.自我介绍
2.简单介绍2个项目+项目选型+负责哪一部分
负责的部分是离线数仓部分
3.围绕项目问问题:
项目所使用的数据模型(问的是星型模型和雪花模型的区别,愣是半天没反应过来,害)
举例几个hive常用函数?
标准聚合函数:Count()、Sum()、Min()、MAX()或AVG(); Rank;
Dense_Rank;
Row_number;
Cume_dist;
Percent_Rank;
NTile;
Lead;
Lag;
First_Value;
Last_Value;
ClickHouse和Hbase有什么区别
Hive和Hbase有什么区别
•Hive是通过构建元数据,映射HDFS文件构建成表,本质还是HDFS,实现离线大数据仓库
•Hbase是通过构建上层分布式内存,底层HDFS,实现大数据实时存储的NoSQL数据库
Hive和Mysql有什么区别
(内心os:啊这,为啥老问我这么多区别,现在仔细想想我应该回答的更完整才符合面试官的需求。)
如何处理Hive的数据倾斜
如何解决数据倾斜一类的问题,可参见这篇:
Hive千亿级数据倾斜解决方案
描述一下Hive的MapReduce过程
mapreduce的三大阶段:
map阶段:并行处理的阶段 shuffle阶段:从离开Mapper开启到进入Reduce之前的阶段 reduce阶段:汇总整理的阶段
mapreduce的八大步骤
设置MapReduce的输入InputFormat类型,默认为TextInputFormat
自定义map函数,得到TextInputFormat的k1,v1;经过处理后传出k2,v2
分区–默认根据k2决定map中的数据该发送到哪个reduce中 排序–默认根据k2进行字典排序
规约–默认没有此阶段,是优化手段,可以提前合并 分组–相同k2的value会放到同一个集合中
自定义reduce函数,讲分组得到的k2,v2转成k3,v3输出
设置输出的OutputFormat,默认采用TextOutputFormat,将结果输出到一个纯文本文件中
Hbase的设计原则
(没答完整,刚刚自己才写的面试题,小丑竟是我自己~)
业务原则:贴合业务,保证前缀是最常用的查询字段
唯一原则:每条rowkey唯一表示一条数据
组合原则:常用的查询条件组合作为Rowkey
散列原则:rowkey构建不能连续
长度原则:满足业务需求越短越好
最后一问:项目的数据流转
4.Java方面
java的基本数据类型有哪些???
java基本数据类型有boolean、byte、short、int、long、char、float、double等
说一下Java的多态和继承
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!