本次的所有操作均在當前使用者目錄下的/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...