項目中的數據遷移(更)
需求
- 數據服務的需求,除了公司集羣現有的業務數倉表之外,還需要用戶行爲數據,因爲主要是風控業務,所以大數據一直在做和規則機有關的數據處理和分析,由於定位問題,所以是有將行爲數據回收自己開發的想法,爲了完成這次關於用戶行爲的數據服務需求,並且未來方便起見,將所以行爲有關的events遷移到自己的集羣。
- 字段500+,數據週期:半年,數據量TB。
過程
整體過程
三方集羣數據落地(腳本)到hive → 集羣去三方拉取數據(hdfs底層數據) → 數據存儲,結構,分析
問題
-
三方集羣性能問題
提供API和JDBC兩種方式,API方式會將impala拉取崩潰,JDBC方式繁瑣並且impala性能不穩,最後使用JDBC方式。
每次不要處理的數據量過大,1000w左右就可以,畢竟中間是有障礙。
-
三方存儲問題
想要一次性的將所有數據落地然後一次性遷移,但是三方存儲不足,如果將全部數據重新落地,耗費太多的硬盤,所以是十天一個週期進行遷移,實際操作就是腳本操作,考慮到如果一次拉取全部數據我們集羣的spark也會耗費大量資源。
所以在三方集羣落地時候腳本就是一天一張表,我們拉取也是一張表進行拉取做date循環。
-
格式轉換問題,由於落地到hdfs的原始數據,所以很多數據會出錯,比如list會變成string,在拉取的過程中會和 \N 這種混在一起,就會出現對不齊的情況,最後數據就會出錯。
所以在落地的時候提前進行數據探查,因爲desc看不到具體類型,只有string,所以必須自己探查,最後將list處理爲string就可以。