Sooo ... 我試圖使用參數化的hql腳本(foo_bar.hql)將大量的原始數據加載到某些配置單元表中,但原始數據由/ yyyy/mm/dd進行目錄分區,所以我編寫了一個shell腳本來打印出具有日期參數的單個配置單元命令,每行一個字符以表示粗壯。 shell腳本輸出看起來是這樣的:如何使用xargs運行nohup子進程池?
nohup hive -f foo_bar.hql -hiveconf MONTH=06 -hiveconf DAY=01 >/dev/null 2>1& &
nohup hive -f foo_bar.hql -hiveconf MONTH=06 -hiveconf DAY=02 >/dev/null 2>1& &
nohup hive -f foo_bar.hql -hiveconf MONTH=06 -hiveconf DAY=03 >/dev/null 2>1& &
nohup hive -f foo_bar.hql -hiveconf MONTH=06 -hiveconf DAY=04 >/dev/null 2>1& &
...
(該>/dev/null 2>1& &
部分傳遞的nohup.out輸出被遺忘,使其不堵塞東西以及在後臺啓動蜂巢命令)
如果單獨運行,這些命令中的每一個都需要花費大量時間才能完成。我有很多需要運行的東西,所以我試圖通過使用xargs運行子進程池來並行化整個事情。我的用法如下:
bash bar_baz.sh | xargs -n 1 -I CMD -P 5 bash -c CMD
是有原因的,我不能確定,xargs的-P 5個併發的子進程的數目不限制爲5,所有打印的命令由shell腳本粗壯得同時執行,Hive隨後崩潰。我覺得這與nohup有關,但是通過查看xargs和nohup的手冊頁並查看interwebs的相似用法示例後,我仍然無法弄清楚發生了什麼。
任何幫助將不勝感激!謝謝!
嘗試從文件中刪除&。 -P選項必須爲你做並行處理 – Tamar