面试WSY

1.假如说,你要采集一批数据,你该怎么采集?

当需要采集一批数据时,首先要对数据源进行全面的分析。这个分析过程可以分为两个主要方面:数据质量分析和表之间关联关系的分析。

1.1 数据质量分析:

  • 字段含义:了解每个字段代表的含义,确保理解数据的来源和内容。
  • 数据类型:确认每个字段的数据类型,例如整数、文本、日期等,以便后续处理和分析。
  • 空值情况:查看是否有字段存在空值,需要考虑如何处理这些空值,是填充还是剔除。
  • 字典值:如果字段中存在字典值,需要搞清楚这些值所代表的具体含义,以便后续转换和解释数据。

1.2 表之间关联关系的分析:

  • 外键:查看是否存在外键,外键可以帮助我们理解不同表之间的联系,从而进行数据关联和整合。

1.3 设计数据模型:

  • 根据分析结果,设计数据模型,选择需要的字段并建立表格结构。
  • 删除非关键字段,只保留对分析和业务有用的字段,以减少数据冗余和提高数据处理效率。
  • 考虑业务的下钻性,即未来可能需要的数据分析需求,预留相关字段以支持未来的指标情况。

1.4 编写数据采集脚本:

  • 最后,根据设计好的数据模型和字段需求,编写SQL脚本采集数据。

总结回答:

首先分析数据源中需要采集的表的数据质量情况以及表之间的关联关系:
	1.针对数据质量情况:应该观看字段含有,字段的数据类型,字段中空值情况,以及字段中是否存在字典值,有的话需要弄清楚字典值所代表的含义,以便后续转换字典值。
	2.针对表之间的关联关系:应该观看是否存在外键,以便为后续关联做好准备
分析完成后:设计数据模型,删除一些非关键字段,例如系统自带的业务标识字段,还应考虑后期业务的下钻性,选出我们可能需要的字段设计成表格,然后编写脚本采集数据。

2.Explain的使用

2.1 执行EXPLAIN命令:

输入类似如下的SQL查询,并在查询前加上EXPLAIN 关键字:

EXPLAIN SELECT * FROM users WHERE id = 1;

2.2 查看执行计划:

  • 执行上述命令后,系统会返回该查询语句的执行计划,包括索引|使用情况、访问类型、扫描行数等信息。
+----+-------------+-------+------------+------+---------------+---------+---------+-------+------+----------+-----------------------+
| id | select_type | table | partitions | type | possible_keys | key     | key_len | ref   | rows | filtered | Extra                 |
+----+-------------+-------+------------+------+---------------+---------+---------+-------+------+----------+-----------------------+
|  1 | SIMPLE      | users | NULL       | ALL  | NULL          | NULL    | NULL    | NULL  | 1    | 100.00   | Using where           |
+----+-------------+-------+------------+------+---------------+---------+---------+-------+------+----------+-----------------------+

在查看执行计划时,可以重点关注以下参数来分析查询的性能和效率:

  1. select type: 显示了查询的类型,例如SIMPLE、PRIMARY、SUBQUERY 等,帮助你了解查询的复杂程度。
  2. table: 显示了涉汲的表名,帮助你确定执行计划中涉及哪些表。
  3. type: 表示访问类型,包括ALL (全表扫描)、INDEX (使用索引扫描)、 RANGE (范围扫描)等,指示了系统如何访问数据。
  4. possible_ keys和key: possible_ keys 列显示可能用于此查询的索引列表,而key列则显示实际使用的索引。如果key列为NULL,则表示没有使用索引。
  5. rows: 表示估计需要检查的行数,这对于评估查询效率很有帮助。行数越大,查询可能越慢。
  6. filtered: 表示通过表达式过滤后符合条件的行所占百分比。值为100%表示所有行都符合条件,值越小则表示有更多行被过滤掉。
  7. Extra: 提供了关于查询执行的其他信息,例如是否使用了临时表、文件排序等情况。

● 通过分析执行计划,你可以看到数据库是如何执行这个查询的,从而找出可能导致性能问题的地方。
总结回答:

	通过使用 EXPLAIN 关键字,可以深入了解查询优化器的执行策略、索引使用情况、访问类型等重要息。
针对慢查询,分析 SQL 语句的执行计划可以帮助查明慢查询的根本原因,进而调整 SQL 语句结构以提升能。
此外,根据执行计划的指引,你还能判断是否需要创建适当的索引来优化查询,从而改善查询性能。
因此,借助执行计划的分析,你可以更有效地优化查询,提高数据库系统的整体性能。

3.项目讲解

项目经历
2022.04-2022.06--------------------------------------------------------------------- “dd”书城数据分析与可视化展示
技术框架:Hadoop+HDFS+Spark+Sqoop+DataX+ECharts+SpringBoot+Vue+Clickhouse
项目介绍:在基于Hadoop大数据环境下实现的用户行为数据分析项目中,针对Spring Boot框架下的图书购物商城进行用户行为分析。在商品浏览、加入购物车、购买以及商品和用户的增删改查等功能模块下进行了埋点,以便针对用户在线购物行为进行数据挖掘和统计分析。通过这些数据,我们可以生成可视化图表,从而更好地理解用户行为和偏好。
工作内容:
● 负责设计和实现数据埋点功能,收集用户行为数据
● 使用Sqoop对Mysql中的用户行为数据迁移到HDFS
● 利用Hadoop生态系统和spark数据计算引擎工具处理海量用户行为数据
● 使用数据迁移工具DataX把统计指标从HDFS迁移到OLAP列式数据库Clickhouse
● 根据ClickHOUSe的统计指标生成可视化图表,利用WebSocket实时展示用户行为趋势
● 为商城运营提供数据支持和决策参考

在项目"dd"书城数据分析与可视化展示中,涉汲到了多种技术框架和工具,包括:

  1. Hadoop:用于搭建大数据环境,处理海量数据。
Hadoop是基础,HDFS,Spark,DataX都是衣着在Hadoop下运行。
  1. HDFS (Hadoop Distributed File System) : Hadoop的分布式文件系统,用于存储大规模数
利用Hadoop的分布式文件系统HDHFS来存储用户数据。
  1. Sqoop:用于在Hadoop和传统数据库之间进行数据传输。
Sqoop将Mysql中存储的埋点数据迁移到HDFS中。
  1. Spark:用作数据计算引擎,处理大规模数据集。
通过编写SparkSQL来处理HDFS中的埋点的用户数据,插入各种统计指标表。
  1. DataX:数据迁移工具,用于将数据从HDFS迁移到其他数据存储。
将统计指标表利用DataX把HDFS中的指标表的数据都迁移到Clickhouse数据库。
  1. Clickhouse: ClickHouse是一个开源的OLAP(联机分析处理)列式数据库管理系统,专门设计用于快速查询和分析大规模数据集。
因为Clickhouse数据库是列式存储,查询起来比较快,所以我们上面通过DataX把指标表从HDFS迁移到了Clickhouse,是为了后续做大屏可视化数据展示速度更快,延迟更低。
  1. WebSocket:用于实现服务器与客户端全双工通信的协议。
可视化是利用WebSocket实现实时大屏展示,利用WebSocket建立长连接进行实时大屏展示时,
后端需要创建WebSocket服务端处理消息、数据推送,前端则负责建立WebSocket连接、处理消息更新页面展示。

总结回答: 能把项目的实现流程讲出来就可以了

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值