mapreduce 多路輸出

2021-09-06 21:41:51 字數 1268 閱讀 2151

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輸出

這裡以redis資料庫為例。這裡的例子是,我想統計日誌檔案中的某天各個小時的訪問量,日誌格式為 1 2014 02 1004 52 34127.0.0.1 1 job.setoutputformatclass fileoutputformat.class 現在我們想要將任務計算結果輸出到資料庫 re...