用mapreduce 處理氣象資料集

2022-06-02 06:00:08 字數 2088 閱讀 2601

本次的所有操作均在當前使用者目錄下的/temp/2018-05-09

wget -drc --accept-regex=regex -p data 

在這之前,需要配置好環境,在.bashrc中加入下面的命令

export path=$path:/usr/local/hbase/bin:/usr/local/hadoop/sbin:/usr/local/hadoop/bin

export hadoop_home=/usr/local/hadoop

export stream=$hadoop_home/share/hadoop/tools/lib/hadoop-streaming-*.jar

start-dfs.sh

hdfs dfs -mkdir weather_data

hdfs dfs -put weather.txt weather_data/

import sys

for line in sys.stdin:

line = line.strip()

print('%s\t%d' % (line[15:23], int(line[87:92])))

reducer.py了,主要**如下:

from operator import itemgetter

import sys

current_date = none

current_temperature = 0

date = none

for line in sys.stdin:

line = line.strip()

date, temperature = line.split('\t', 1)

try:

temperature = int(temperature)

except valueerror:

continue

if current_date == date:

if current_temperature < temperature:

current_temperature = temperature

else:

if current_date:

print('%s\t%d' % (current_date, current_temperature))

current_temperature = temperature

current_date = date

if current_date == date:

print('%s\t%d' % (current_date, current_temperature))

chmod a+x reducer.py

test.txt中包含了部分的天氣資料

下面是執行截圖:

執行成功後可編寫run.sh

hadoop jar $stream \

-d stream.non.zero.exit.is.failure=false \

-file /home/hadoop/temp/2018-05-09/reducer.py \

-reducer 'python /home/hadoop/temp/2018-05-09/reducer.py' \

-input /user/hadoop/weather_data/*.txt \

-output /user/hadoop/weather_output

執行run.sh

source run.sh

最後的執行結果通過cat列印截圖:

用mapreduce 處理氣象資料集

用mapreduce 處理氣象資料集 編寫程式求每日最高最低氣溫,區間最高最低氣溫 解壓資料集,並儲存在文字檔案中 對氣象資料格式進行解析 編寫map函式,reduce函式 將其許可權作出相應修改 本機上測試執行 放到hdfs上執行將之前爬取的文字檔案上傳到hdfs上 用hadoop streami...

用mapreduce 處理氣象資料集

編寫程式求每日最高最低氣溫,區間最高最低氣溫 解壓資料集,並儲存在文字檔案中 對氣象資料格式進行解析 編寫map函式,reduce函式 將其許可權作出相應修改 本機上測試執行 放到hdfs上執行將之前爬取的文字檔案上傳到hdfs上 用hadoop streaming命令提交任務 檢視執行結果12 3...

用mapreduce 處理氣象資料集

用mapreduce 處理氣象資料集 編寫程式求每日最高最低氣溫,區間最高最低氣溫 解壓資料集,並儲存在文字檔案中 對氣象資料格式進行解析 編寫map函式,reduce函式 將其許可權作出相應修改 本機上測試執行 放到hdfs上執行將之前爬取的文字檔案上傳到hdfs上 用hadoop streami...