我在HDFS中有兩個文件。第一個文件包含一條記錄,其中包含員工一天的開始時間和結束時間。他在早上5點檢查系統,並在@ 2pm離開系統並記錄開始時間,結束時間和持續時間。映射減少合併兩個文件沒有相同的密鑰
文件2包含的記錄代表客戶稱爲我們辦公室的確切時間。
如何使用pig,m/r等這兩個文件加入到HDFS中,給我一個表示每個客戶的結果集,以及他們所有可用的員工叫什麼名字?
我在HDFS中有兩個文件。第一個文件包含一條記錄,其中包含員工一天的開始時間和結束時間。他在早上5點檢查系統,並在@ 2pm離開系統並記錄開始時間,結束時間和持續時間。映射減少合併兩個文件沒有相同的密鑰
文件2包含的記錄代表客戶稱爲我們辦公室的確切時間。
如何使用pig,m/r等這兩個文件加入到HDFS中,給我一個表示每個客戶的結果集,以及他們所有可用的員工叫什麼名字?
當你說時間時,我們談論什麼精度,分鐘,秒?有一件事可能是讀取員工文件,並假設我們正在談論分鐘級別的精度,對於文件1中的每個條目,每分鐘持續輸出(時間,empID)直到結束。對於文件2,只是發出(時間,客戶ID)。現在減速機會做需要的
這可行,但由於CROSS
,對於大型數據集來說這可能是不可取的昂貴的。
EmpInOut = LOAD 'empdata' using PigStorage(',') as (empID:int, logInTime:int, logOutTime:int);
CustCalls = LOAD 'custcalls' using PigStorage(',') as (custID:int, callTime:int);
BigMess = CROSS CustCalls, EmpInOut;
EmpsAvail = FILTER BigMess BY logInTime <= callTime AND logOutTime >= callTime;
Answer = GROUP EmpsAvail BY (custID, callTime);
DUMP Answer;
我測試使用這些數據文件:
文件 'EMPDATA':
0,0600,1200
1,0700,1400
2,0800,1600
3,0900,1200
4,1000,1900
5,1100,1900
6,1200,2000
文件 'custcalls':
101,0500
102,0630
103,0730
104,0830
105,0930
106,1210
107,1930