目錄
一、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))