streaming支援多路輸出(suffixmultipletextoutputformat)
如下示例:
hadoop streaming \
-input /home/mr/data/test_tab/ \
-output /home/mr/output/tab_test/out19 \
-outputformatorg.apache.hadoop.mapred.lib.suffixmultipletextoutputformat\ #
指定outputformat
為org.apache.hadoop.mapred.lib.suffixmultipletextoutputformat
-jobconf suffix.multiple.outputformat.filesuffix=a,c,f,abc,cde \ #
指定輸出檔名的字首,所有需要輸出的檔名必須通過該引數配置,否則
job會失敗
-jobconf suffix.multiple.outputformat.separator="#"\ #
設定value
與檔名的分割符,預設為
「#」,如果
value
本身含有
「#」,則可以通過該引數設定其他的分隔符
-reducer "sh reduce.sh" \
-file reduce.sh
注:標記為紅色的引數必須設定,引數說明請見注釋
map或者reduce裡需要在每個記錄的reduce追加「#+檔名」
#!/bin/bash
while read line
dokey=$(echo $line | awk -f' ' '')
value=$(echo $line | awk -f' ' '')
if [ "$key" == "a" ]
then
echo"$key $value#a"
fi if [ "$key" == "c" ]
then
echo "$key $value#c"
fi if [ "$key" =="f" ]
then
echo "$key $value#f"
fiif [ "$key" =="abc" ]
then
echo "$key $value#abc"
fiif [ "$key" =="cde" ]
then
echo "$key $value#cde"
fidone
MapReduce如何使用多路輸出
streaming支援多路輸出 suffixmultipletextoutputformat 如下示例 hadoop streaming input home mr data test tab output home mr output tab test out19 outputformatorg....
mapreduce 多路輸出
streaming支援多路輸出 suffixmultipletextoutputformat 如下示例 hadoop streaming input home mr data test tab output home mr output tab test out19 outputformatorg....
如何使用MapReduce實現兩表的join
map join map side join 是針對一下場景進行的優化。兩個待連線的表中,有乙個表非常大,而另乙個非常小,以至於小表可以直接存放到記憶體中。這樣,我們可以將小表複製多份,讓每乙個map task記憶體中存在乙份 比如放在hash table中 然後只掃瞄大表 對於大表中的每一條記錄k...