生活隨筆——在開發上的一點記錄
來自專欄 Python爬蟲實戰
文章說是生活隨筆,到不如說是對本周開發工作中的一些體會與思考的記錄。
這個專欄我想除了對知識上的一些記錄,以後也可以加入生活上的收穫。好記性不如爛筆頭,或許多年後再回看這些文章,回看進步的歷程,也是一件很有成就感的事情。
4月份換了工作去做數據開發,重點項目還是做用戶畫像。開發時間排的很緊,平均每天要開發1~2個標籤。從和需求方確認標籤口徑,找標籤對應數據所在的表、欄位定義、數據存儲結構,到寫標籤邏輯,上線驗證標籤正確性.... 時間簡直不夠,更不要說某些複雜口徑的一個標籤都要寫上百行的邏輯。
今天周四了,這周到現在又開發了6個標籤,寫了一個調度腳本,正在進行著一次數據邏輯調優。下面挑兩個重要點的記錄一下:
1、任務調度腳本開發
畫像數據目前是寫在Spark SQL裡面,通過每天定時任務調python腳本,來執行Spark SQL。
但這樣的話開發效率比較低,一方面開發人員寫完Hive SQL腳本後,還需要在外麵包一層spark才打包成可執行腳本,另一個方面對於每一個打包後的python腳本都要寫一個crontab調度命令。
所以必須要優化一下流程。優化方式就是:
①開發人員對畫像標籤只需寫Hive SQL腳本,傳到伺服器對應目錄下;
②通過一個python腳本,自動掃描目錄下的sql文件,載入並替換掉sql中的日期變數,並將替換日期後的腳本文件包上spark去執行;
③每天crontab命令只需定時調度該python腳本即可,不需要在每新上一個標籤的Hive SQL邏輯,就上一條調度命令。
2、數據邏輯調優
開發出的標籤很多了,但有的標籤邏輯複雜,需要做進一步調優,提高每日跑批作業的執行效率,這裡就與日誌數據相關的標籤為例。
用戶近30日活躍時間段:這個口徑需要計算用戶近30天是在中午、下午、晚上哪個時間段訪問次數最多,這顯然是一個與日誌數據相關的口徑。
而記錄用戶訪問行為的日誌數據的情況是:
1、做了日期分區,每日全量更新歷史數據。而且日誌數據量很大,每天都有億級pv;
2、這就導致了在每天跑批時都需要從近30天的訪問日誌中抽取數據計算,一次幾十億pv的計算,相當耗費計算資源了。
後來做的調優方式是:
①首次刷數據時刷近30日用戶在每個時間段的活躍次數,做倒排序找出用戶活躍時間段;
②後續每天跑批任務時,只需計算前一天用戶訪問各時間段對應的次數(不通過日期分區欄位找,對用戶訪問時間做日期格式處理後通過訪問日期來找),並與歷史數據做加總,找出其活躍時間段;
③這樣計算就免去了計算近30日的日誌數據,僅需計算前一天的數據即可。
近期在不斷補充學習新知識,spark要搞起來了、shell命令要用熟起來了。都要投入精力搞。
寫到這會已經周五早上53分了,過幾個小時還要繼續投入。這周的一些想法先總結到這裡。
我覺得生活也好、工作也好,或許就是在這麼一天天的貌似不起眼的積累中,不斷進步的。
作為一個多年的米粉,記得那次看紅米note3發布會的末尾,被他文案中樸實、真誠的語句吸引了。在這裡想用那句台詞做結「我所有的嚮往」。嚮往著在每一個看似普通的日子中精彩生活、不斷進步、奔騰向前
推薦閱讀:
※石油轉行互聯網現身說法
※【重磅】中國互聯網發展趨勢報告2016
※共享工具規則怎麼玩
※哀悼與團結的曲線
※獲高圓圓投資,花點時間如何在2年做到過億營收?