目录
一、Spark
1.spark主要用来计算什么? 随便说段代码
2.spark 运行命令说一个,平常用哪些参数,怎么考虑的
3.spark shuffle的代码有哪些,平日哪些操作涉及到shuffle了
4.计算中遇到最难解决的是什么?
5.Spark 调过哪些参数
二、Hive
1.压缩格式比较
2.动态分区和指定分区的对比
3.计算最复杂的业务逻辑是什么
4.小文件治理怎么搞
5.再平衡怎么搞
6.开窗函数有哪些,用于哪里
7.关于数组的函数
8.hdfs block块大小默认是多少,调过吗?什么情况下调整?
三、数据仓库
1.有多少表,表的数据量是多少
2.模型设计怎么做的(数据分层怎么做的)
3.高频数据怎么做的
4.有哪些主题域 有哪些实体 有哪些维度
5.每日增量数据有多少
6.缓慢变化维的应用
7.拉链表的应用,拉链表的增量/全量统计
8.sqoop的同步效率
9.sqoop的数据倾斜
四、Python
1.pandas如何处理大规模数据
2.如何提高高并发
3.协程 进程 线程
4.Fast Api 和 Flask
5.增量同步怎么做 全量同步怎么做
6.Python 深拷贝 浅拷贝的使用场景
一、Spark
1.spark主要用来计算什么? 随便说段代码
2.spark 运行命令说一个,平常用哪些参数,怎么考虑的
3.spark shuffle的代码有哪些,平日哪些操作涉及到shuffle了
4.计算中遇到最难解决的是什么?
Impala连接打满
5.Spark 调过哪些参数
二、Hive
1.压缩格式比较
2.动态分区和指定分区的对比
3.计算最复杂的业务逻辑是什么
4.小文件治理怎么搞
5.再平衡怎么搞
6.开窗函数有哪些,用于哪里
7.关于数组的函数
8.hdfs block块大小默认是多少,调过吗?什么情况下调整?
- 默认128M 可调
- 小文件处理:若存储大量小文件(如日志),调小块大小(如64MB)可减少存储浪费,但会增加NameNode元数据压力。
- 大文件处理:对TB/PB级文件,调大块(如256MB或512MB)可减少分块数量,降低元数据开销
三、数据仓库
1.有多少表,表的数据量是多少
每日 zm_fund.fundperformance 135W条数据
假设7年 ZM_DW_ES.FUNDROLLSTATIS_JIXIAO 18亿数据
基金数量统计: 正常 公募+私募+尽调 = 3+3+1 = 7W +投后1W +模拟10W =总共18W
实际 18W+模拟无效34W = 52W ,
fundid层100W
投后一万只基金
朝阳43 W --> 朝阳库有误,现在只有两三万
聚源3W(2.9W)
尽调1W
脱敏模拟44W,有效10W
-----------------------------------------------
fundid层共100W
原始净值数据 2.5亿
插补净值日频 4亿
插补净值周频 1亿
----------------------------------------------
股:债:CTA:市场中性 12:4:2:1
2.模型设计怎么做的(数据分层怎么做的)
基于对外输出标尺库的数据,每类的评分数据 400w,
需要 有池子分类数据,基金净值数据,实体主要就是基金,维度有策略分类和赛道分类
初始ODS层进行数据同步fundinitcode
然后 dwd层进行 基金每日绩效统计 和 基金时序的绩效统计
然后DWS 基金在股票型池子的时序绩效评分
然后 ADS 基金在股票型池子的时序的近系列的绩效评分(多行) 到 最终的大宽表(多列)
ADS:股票多头总分评分表,绩效质量评分表,资产配置能力评分表,场景应对能力评分表 alpha获取能力评分表
TiDB 查询,对外api服务,sqoop 增量同步。
ZM_DW_RANK.DW_FUND_SCORE_DAY_NORM_LONG 基金在股票型池子的时序的绩效评分
ZM_DW_RANK.DW_FUND_SCORE_DAY_NORM_STATISPERIOD_LONG 基金在股票型池子的时序的近系列绩效评分 hera985 a.statistic_date,a.statistic_period,a.rankconfigid,a.frequency,a.fund_id,a.zm_fund_id
zm_dw_rank.t_fund_stock_performance hera1015 近系列绩效多行转多列 max(case a.statistic_date when 1 then a,daywinrate else NULL END) AS total_daywinrate ,--成立以来_对比基准胜率zm_dw_rank.t_fund_stock_performance tidb 分区同步set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions=2000;
set hive.exec.max.dynamic.partitions.pernode=400;
set hive.optimize.sort.dynamic.partition=true;
--SET hive.map.memory.mb=10240; -- 设置Map任务的内存为2GB
--SET hive.reduce.memory.mb=20480; -- 设置Reduce任务的内存为2GB
--SET hive.exec.reducers.bytes.per.reducer=314572800 ;-- 300M 设置每个Reducer处理的数据量。虽然这是控制Reducer数量的参数,
--但是通过调整它,可以间接影响Map任务的数量,因为Map和Reduce任务的数量通常是成比例的。INSERT OVERWRITE TABLE zm_dw_rank.t_fund_stock_performance PARTITION(statistic_date)select fund_id,zm_fund_id,a.rankconfigid AS category_id,b.rankconfigname AS category_name,
max(case a.statistic_period when 74 then a.daywinrate else NULL END) AS y5_daywinrate ,--近5年_对比基准胜率
max(case a.statistic_period when 2 then a.daywinrate else NULL END) AS year_daywinrate ,--今年以来_对比基准胜率
max(case a.statistic_period when 1 then a.daywinrate else NULL END) AS total_daywinrate ,--成立以来_对比基准胜率1 is_valid ,--是否有效
current_date() create_time, --创建时间
a.statistic_dateFROMzm_dw_rank.dw_fund_score_day_norm_statisperiod_long aLEFT JOIN zm_ods_flare_fund.ods_FundRankConfig b on a.rankconfigid = b.rankconfigid
WHERE statistic_period IN (1, 2, 3, 5, 6, 7, 8, 9, 74)and a.rankconfigid in (1660,1661,1662,1663,1664,1673)
-- and a.zm_fund_id = 1322647
-- and a.statistic_date = '2024-12-22'GROUP BY A.fund_id,A.zm_fund_id,A.rankconfigid,b.rankconfigname,a.statistic_date ,1,current_date();
基于什么需求,做了什么业务,有哪些表/字段,ODS层数据从哪儿来,DWD层数据怎么处理,ADS层什么数据,支撑哪些查询 (建模方法论)
3.高频数据怎么做的
4.有哪些主题域 有哪些实体 有哪些维度
5.每日增量数据有多少
6.缓慢变化维的应用
7.拉链表的应用,拉链表的增量/全量统计
8.sqoop的同步效率
9.sqoop的数据倾斜
四、Python
1.pandas如何处理大规模数据
2.如何提高高并发
3.协程 进程 线程
4.Fast Api 和 Flask
每日并发量4000
5.增量同步怎么做 全量同步怎么做
6.Python 深拷贝 浅拷贝的使用场景
7.Python瓶颈如何定位
--------------------------------------------------------------pyinstrument
from pyinstrument import Profiler
profiler = Profiler()
profiler.start()
ErrorCode,message = service.get_updated_calculation(oldfundsyscode=121739,fundsyscode=10000063521,fundid=10000072227,familytype=2)
profiler.stop()
print(profiler.output_text(unicode=True, color=True))