简历名称(如何命名)

姓名 + 岗位 + 工作经验 (必选)+ 意向城市(可选) + 学历(可选)

比如张三- 大数据开发工程师-3年

1,找准定位

  • 初级,1-3年,应届生基础扎实

  • 高级,4-6年

  • 专家级,7年-10年

  • 更高级,技术影响力,业务影响力,管理能力

    2,个人履历

  • 个人背景 + 项目经历 + 工作经历(稳定向上)

  • 漂亮的排版(Markdown)

3,技术栈

突出重点,不要罗列(要专精),T字型(要有广度兼具深度,如果工作时间比较短,应该有深度,但广度就不是必须),逐年成长,由浅入深。

4,项目描述

用技术性的语言描述业务项目,重点难点一定要有(写3-5个)

5,开放性问题

解决方案,技术要点。能有创新的东西更好,需要咱有技术。

兴鑫商城项目文档

1、自我介绍

面试官你好,我叫xxx,来自黑龙江,就读于青岛恒星学院,之前在深圳有4年大数据开发经历,主要是做电商领域的离线这一块,今天来是看看有没有更好的机会,接下来就介绍一下我以前做的项目。

2、为什么做大数据项目

一开始我们的业务数据存在mysql,oracle里,因为数据量指数级的增长,传统数据库无法解决海量数据的存储和计算问题,我们将业务场景迁移到大数据平台上,这就有了数仓项目。

3、项目架构

下面我给您讲一下我们的新零售的项目架构,项目环境采用Cloudera manager,用sqoop把数据从mysql导入到hdfs中,使用hive映射到ods层,oozie调度器调度,基于hive构建数据中心平台,形成各个业务宽表数据,再用presto统计分析,形成数据集市,根据需求将统计结果数据用presto直接导出到mysql,最后使用finebi进行展示。

首先我们数据来源有两个,一个是静态数据源,主要是存放在mysql中,大概有100多张表,我负责的销售,商品,用户主题共23张表,包括订单的明细,退款,评价表,商品分类表,区域字典表等等

另一个是动态数据源,通过js埋点,flume采集nginx日志服务器的数据,包括用户的点击,收藏,评论等数据,这一块主要是由我另一个同事负责

整个项目的数仓使用维度建模分为6层:

  • ods源数据层,不对数据进行任何处理,直接使用sqoop从mysql中导入数仓
  • dwd数据明细层,划分事实表和维度表,并对数据进行清洗,过滤无效字段,转换时间格式,保证数据的质量,比如订单来源/状态(将对应的整数值转换为string类型,安卓,ios,pc等)
  • dwb数据中间层,退化订单评价表,结算表,商品分类表等维表,关联事实表,形成各主题宽表
  • dws数据服务层,针对不同维度(日期+店铺/品牌/商品分类)组合,轻度聚合形成日统计宽表(多条sql union all或grouping sets)
  • dm数据集市层,根据日统计宽表上卷,粗粒度汇总得到各主题周,月,年统计宽表
  • rpt报表应用层,裁剪拼接,得到结果表,方便进行报表展示

以下可选:

项目指标类划分

-——————————————————————————

1-销售主题:

销售收入、平台收入、配送成交额、小程序成交额、安卓APP成交额、苹果APP成交额、PC商城成交额、订单量、参评单量、差评单量、配送单量、退款单量、小程序订单量、安卓APP订单量、苹果APP订单量、PC商城订单量

维度有:日期、城市、商圈、店铺、品牌、大类、中类、小类

-——————————————————————————

2-商品主题:

下单次数、下单件数、下单金额、被支付次数、被支付件数、被支付金额、

被退款次数、被退款件数、被退款金额、被加入购物车次数、被加入购物车件数、被收藏次数、好评数、

中评数、差评数

维度有:商品、日期

-——————————————————————————

3-用户主题

首次登录日期、末次登录日期、登录天数、收藏店铺数、收藏商品数、首次加入购物车日期、末次加入购物车日期、加入购物车次数、加入购物车金额、首次下单日期、末次下单日期、下单次数、下单金额、首次支付日期、末次支付日期、支付次数、支付金额

维度有:日期、用户

事实表(15个):订单事实表(拉链表)、订单详情表(拉链表)、订单结算表(拉链表)、退款订单表(拉链表)、订单组表(拉链表)、订单商品快照(拉链表)、购物车(拉链表)、店铺收藏(拉链表)、商品收藏(拉链表)、配送表(拉链表)、商品评价表(拉链表)、交易记录(拉链表)、订单评价表(增量表)、登录记录表(增量表)、订单组支付(增量表)

维度表(8个):区域字典表(全量覆盖)、时间维度表(全量覆盖)、店铺(拉链表)、商圈(拉链表)、地址信息表(拉链表)、商品表(拉链表)、商品分类(拉链表)、品牌表(拉链表)

-——————————————————————————

4、项目中指标实现

销售收入指标sale_amt的计算思路:

计算(城市,商圈,店铺,品牌,商品大中小类)等8个维度的销售收入,我们在dws层关联上层三张宽表,使用CTE+row number对分组字段进行去重得到临时结果集,再使用group by+grouping sets 分组聚合,通过case when +grouping筛选分组,对字段不为null的商品金额(使用coalesce(total_price,0)使用sum函数求和,得到dws层的日统计销售收入

随后在dm层上卷,基于dws层日统计宽表,关联dwd层时间维度表,粗粒度汇总得到年,月,周销售收入,最后在rpt层形成报表,对接BI进行大屏展示

在举一个例子:

计算8个维度的订单量,在dws层关联上层三张宽表,使用wte+rownumber根据订单id进行分组去重,得到临时结果集,在使用

5、项目中遇到的三个问题

存储:ODS层压缩格式使用ZLIB,大大节省了磁盘的空间,其他层使用SNAPPY提升读取数据的效率

映射:MySQL抽取数据全量到ODS层时,由于数据量过大,导致数据采集失败,后面写了一个Shell脚本分批循环导入

查询:多级分类采用子查询提高代码效率

拉链表:为什么有拉链表,拉链表有什么作用?

6、数据量

全量数据:历史存储3年的数据, 整个数据平台的数据为3.3TB左右 , 冗余存储量为 10TB

日增量:每日增量3GB左右,每条数据1.5KB,一天大概200万条数据

月增量:月数据60G (大概6000万条数据)

年增量:年数据1.1T (大概7.2亿条数据)