使用 hadoop file shell 可以方便地向 hdfs put 檔案,但是,該 shell 不支援從管道讀取資料並放到 hdfs 檔案中。它僅支援這樣的 put 命令:
cd $hadoop_home
bin/hadoop fs -put localfile $hdfsfile
bin/hadoop fs -put localfiles $hdfsdir
幸好,主流的 unix (linux,bsd等)都有乙個/dev/fd/目錄,可以用它實現從管道 put 檔案
cd $hadoop_home其中,使用 pipestatus 檢查錯誤 。if bin/hadoop fs -test -d $hdfsfile
then
echo "$hdfsfile is a directory" >&2
exit 1
ficat localfiles | bin/hadoop fs -put /dev/fd/0 $hdfsfile
if [[ "0 0" == $ ]]
then
echo success
else
bin/hadoop fs -rm $hdfsfile
echo failed >&2
fi
需要注意,使用/dev/fd/0put 檔案時,hdfsfile 必須事先不存在,並且不能是乙個目錄,如果hdfsfile實際上是乙個目錄,那麼,put 仍然正確執行,但是,hdfs 中的檔名將是hdfsfile/0
/dev/fd/ 中是程序所有已開啟的檔案描述符列表,例如 /dev/fd/0 代表標準輸入,/dev/fd/1 代表標準輸出,/dev/fd/2 代表標準錯誤輸出,等等,開啟 /dev/fd/n 相當於呼叫 dup(n) 。
父子程序通過管道通訊 命名管道
unix程式設計。建立了兩個命名管道,利用這兩個管道實現父子進城的通訊。即父程序可以像子程序傳送訊息,可以讀取子程序的訊息。子程序一樣。下面是全部原始碼。include include include include include include include include include i...
通過HTMLExtractor向HTML要資料
西安市國土資源資訊中心 李博 如何不斷擴充資料中心的資料規模,提公升資料探勘的價值,這是我們思考的問題,資料一方面來自於內部生產,一部分資料可以來自於網際網路,網際網路上的資料體量龐大,形態多樣,之前blog裡很多fmeer已經提出了方案,比如json,xml,正規表示式等等,但對於比較鬆散的htm...
使用lrzsz工具通過串列埠向開發板傳送檔案
最近在做乙個專案,開發板的網口不能使用,只好研究通過串列埠向開發板傳送檔案。發現了lrzsz這個軟體,配合teraterm串列埠工具,成功滿足了我的需求。交叉編譯出目標板執行的lrzsz程式 預先放入開發板的sd卡或者emmc中。解壓並進入到軟體包目錄 tar xf lrzsz 0.12 20.ta...