資料搬運測試

2021-10-13 03:02:02 字數 1456 閱讀 9106

2、檢查對映關係,hive中儲存表字段和搬運目的地(redis,es,資料庫)欄位要一一對應

3、批量校驗資料準確性以及是否丟失

以資料搬運到redis為例

資料準確性校驗主要是對比hive中查詢到的資料和落到redis中資料進行對比

並且要驗證資料是否有丟失情況

最開始的想法是寫個python指令碼,把hive的資料拉出來和redis中的資料開個介面獲取到,2邊的資料進行對比校驗,但想想一般清洗的是大資料量,做一次對比校驗估計要跑一天或者幾天的,效率不高,而且維護成本比較高

後面決定隨機抽樣幾千條進行校驗,效率可以提公升很多,並且讓介面測試系統連線hive可以進行批量查詢,查詢時對映成redis一樣的欄位名稱,再用hive查詢到的資料批量請求redis介面,redis介面資料和hive資料進行對比,如果欄位都對,則斷言成功,否則失敗

import json_tools

import json

def jsondiff(x, y):

result = json_tools.diff(x, y)

return result

#response = res.replace(』\』,』』)

redis_data = json.loads(response)

if len(redis_data) < 1:

result = 「false」

message = u』響應結果為空』

data = call.searchkey(info, 「dbyf5001」)

hdata = json.loads(data)

arg = json.loads(arg)

arg = arg[「apidocqueryparam」]

arg = arg[「key」]

pmid = arg.split(』_』, 1)[1]

result = 「true」

for i in range(len(hdata)):

mid = hdata[i][「mid」]

hive_data = hdata[i]

if mid == pmid:

break

diff = jsondiff(redis_data, hive_data)

message = diff

for i in range(len(diff)):

if (『add』 in diff[i]):

continue

else:

result = 「false」

4、全量資料+增量資料搬運的話需要考慮上線方案,如果線上資料有問題如何補資料問題

5、資料為空的字段redis不匯入,資料為0的資料會匯入redis,如果要節省redis空間,清洗資料時需要把為0的資料型別進行轉換string為空

6、搬運失敗資料處理

匯入失敗9條處理:把具體錯誤資料建個臨時表,手動匯入補資料,最好找下原因,可能redis處理不過來

手動搬運資料到hive

本次以下表為例 create table t user id number 10,0 name varchar2 10 char 1 job varchar2 20 以oracle為例,使用pl sql將查詢出結果後匯出為csv格式,具體操作可以檢視link 執行完後該檔案實際上應該是以逗號隔開的文...

818搬運日 讓搬運更暖心,搬運幫全面開啟

818諧音 搬,要搬 搬運幫將818定為周年慶典日。搬運幫以 讓搬運更暖心 為主題,成立了818搬運日。平台的也根據這個主題優化了搬運行業的www.cppcns.com弊端,對於樓層費,拆裝費不予收取 人工費用按時計費,就是為避免再出現用人工時 被坑 現象。搬運幫,網際網路 搬運平台 線上下單結算w...

貨物搬運 貪心

有環行排列的n個倉庫,每個倉庫存有的貨物數量分別是m1 m2 mn,且 s m1 m2 mn 必為 n 的倍數。可以在任意乙個倉庫中取任意數量的貨物搬運到相鄰的倉庫。現在需要找到一種搬運方法,搬運最少的貨物使得使每個倉庫中的貨物數目相同。例如 n 4,每堆貨物的數量分別為 17 9 14 16 4,...