目标:掌握一站制造项目中的优化方案
实施
优化:参考FTP中:《就业面试》中的优化文档
资源优化:开启属性分配更多的资源,内存合理分配
开发优化:谓词下推:尽量将不需要的数据提前过滤掉【join】
结构优化:文件存储类型、分区结构化
分区表:静态分区裁剪
select count(*) from table1 where daystr = '2021-10-15'; --走分区裁剪过滤查询
--spark2中先join后过滤
select
*
from table1 join table2 on table1.id = table2.id and table1.daystr = '2021-10-15' and table2.daystr='2021-10-15';
新特性:Spark3.0
动态分区裁剪(Dynamic Partition Pruning)
默认的分区裁剪只有在单表查询过滤时才有效
开启动态分区裁剪:自动在Join时对两边表的数据根据条件进行查询过滤,将过滤后的结果再进行join
spark.sql.optimizer.dynamicPartitionPruning.enabled=true
自适应查询执行(Adaptive Query Execution)
基于CBO优化器引擎:实现最小代价的数据处理
自动根据统计信息设置Reducer【ShuffleRead】的数量来避免内存和I/O资源的浪费
自动选择更优的join策略来提高连接查询性能
自动优化join数据来避免不平衡查询造成的数据倾斜,将数据倾斜的数据自动重分区
spark.sql.adaptive.enabled=true
小结
目标:掌握一站制造的项目中遇到的问题及解决方案
实施
问题1:数据采集不一致问题
问题2:数据倾斜问题
问题3:小文件问题
问题4:ThriftServer资源不足,GC问题
start-thriftserver.sh \
--name sparksql-thrift-server \
--master yarn \
--deploy-mode client \
--driver-memory 1g \
--hiveconf hive.server2.thrift.http.port=10001 \
--num-executors 3 \
--executor-memory 1g \
--conf spark.sql.shuffle.partitions=2
问题5:ThriftServer单点故障问题
小结
项目名称:一站制造大数据项目(2021年1月-2021年9月)
项目架构:
spark2.4+hive2.1+hadoop2.7+sqoop1.4+oracle11g+mysql5.7+airflow2.0
项目简介:
一站制造项目基于工业互联网行业,为解决基于传统数据存储架构无法解决的问题而开发的大数据项目。在石油制造行业存在大量运营、仓储物料数据,通过大数据技术架构解决这种复制业务情况下的数据存储和分析以及数据可视化问题。主要基于hive数据分层构建存储各个业务指标数据,基于sparksql做数据分析。核心业务涉及运营商、呼叫中心、工单、油站、仓储物料等业务。
个人职责:
1.负责将存储在关系型数据库中的业务系统数据导入hdfs上。
2.根据原始数据表,批量创建hive表,设置分区、存储格式。
3.根据业务关联关系以及分析指标,建立数仓模型。
4.实现数据模型中的各个数仓分层的数据建模,建表。
5.负责实现每个分层的数据抽取、转换、加载。
6.负责编写shell实现sqoop脚本批量导入数据。
7.负责编排sqoop导入数据的任务调度。
8.负责使用sparksql进行数据应用层指标进行分析。