2016-08-23 57 views
0

請看看我的過程&問題如下:第一步 -I想先我使用SQOOP使用 導入增量數據的增量fashion.So加載一個mysql表數據「漸進式追加檢查列最後一個值' 假設這個商店到HDFS文件夾'/ sqoopdir1' 第2步 - 我想使用豬腳本來做一些數據驗證,如重複檢查,結果應該到'/ user/root/pigdir' 步驟3 - 我想創建一個蜂巢外部表'extsample',指向pig輸出目錄爲「保存爲文本文件位置'/ user/root/pigdir'蜂巢外部表增量加載

我的問題在這裏是 (1)SQOOP將在HDFS文件夾/ sqoopdir1中創建part-m-00001,part-m-00002等。但對於每個增量進程,我只需要最新的PIG進程文件來自動選擇。 (2)另一個問題是,PIG在/ user/root/pigdir中創建part-r-00000文件。第二次作業失敗說文件已經存在,所以我必須重命名文件來運行PIG作業。

總之,我想要初始加載數據+剛剛插入/更新記錄在最終配置單表中。作爲初學者,請你幫忙解決提到的問題或建議更好的方法。謝謝!

回答

0

1)根據我的理解,你正試圖將每個增量數據sqoop到同一個文件夾?但是這不是真的,sqoop也會拋出一個異常文件夾已經存在。部分m-00文件是sqoop的輸出,因此如果您考慮它,所有這些「部分」文件都是您通過單個sqoop攝入生成的增量數據。

我們需要在代碼中處理這個問題,就像每個sqoop增量攝取,我們需要提供一個動態的輸出位置(追加時間戳的文件夾名稱)......同去用豬。如果您使用shell腳本調用sqoop,並且豬傳遞動態位置非常簡單。

+0

嗨,因爲它是SQOOP增量APPEND,它允許我在同一個文件夾中有多個文件,如part-m-00001,part-m-00002等 – user6392682

+0

然後,您可能需要一個暫存文件夾來保存一個特定的增量數據並嘗試將其傳遞給豬script.Or使用基於時間戳的邏輯,以獲得最新的增量文件,並將其輸送到豬腳本... –

+0

謝謝您同意reply.Do,在使用之間豬腳本是一種有效的方法?如果可以,請給我一些使用豬的有效數據驗證示例(如重複刪除)?臨時表也應該作爲外部表格外殼而僅僅是特定的日期增量數據嗎?我們是否需要對臨時表數據執行任何操作,還是僅用於存放增量數據? – user6392682