期望目的

下载《Hadoop权威教程》里用到的NCDC天气数据,供后续在此数据基础上跑mapred程序。

操作过程

步骤一、编写简单的shell脚本,下载数据文件到本地文件系统

已知NCDC天气数据父目录地址为ftp://ftp.ncdc.noaa.gov/pub/data/noaa/,编写如下脚本下载1901年到1950年的天气数据:

#!/bin/sh
uri=ftp://ftp.ncdc.noaa.gov/pub/data/noaa/
start=
end=
for((i=start;i<=end;i++))
do
target_url="$uri$i/"
echo "start download $target_url" >> ./log
if [ ! -d "./$i" ]
then
mkdir "./$i"
fi
wget -r -nd -P "./$i" $target_url
done

关于shell脚本,可以去这里花1、2个小时大概过一遍:https://www.runoob.com/linux/linux-shell.html

创建目录存放将要下载的数据

cd ~
mkdir ncdc
cd ncdc

为上面写的脚本赋予执行权限

chmod +x download.sh

执行脚本

./download.sh

然后就是漫长的等待,由于这个ftp服务器在国外,链接也很不稳定,下载会经常超时中断,但是wget会自动重试,我们只需要不定时瞅一眼是不是还在下载就行了,

步骤二、将天气数据合并成每年一个文件

步骤一下载下来的文件是以年份、站点为文件单位组织的数据,文件体积较小,不便于发挥HDFS的块存储特性,这一步把天气数据按年组织成一个文本文件,用到的shell脚本如下:

#!/bin/bash
dir="raw"
if [ ! -e $dir -o ! -d $dir ]
then
mkdir $dir
fi for file in `ls`
do
if [ -d $file -a $file != $dir ]
then
for subfile in `ls $file`
do
if [[ $subfile == *.gz ]]
then
echo "find gzip file $subfile"
filename="${dir}/${file}.txt"
`gzip -d -c ${file}/${subfile} >> $filename >>error.log`
fi
done
fi
done

大致解释一下脚本的功能:遍历下载目录下的每个年份目录,将年份目录中的记录文件通过gzip工具解压,输出到以年份命名的txt文件中。

为该脚本赋予执行权限后,执行即可。

步骤三、将合并后的数据文件存入HDFS中

利用hdfs dfs命令,将处理好的数据存入hdfs中

hdfs dfs -mkdir /ncdc
hdfs dfs -put ~/ncdc/raw/ /ncdc

总结

至此,数据整合、存储入HDFS完毕,可通过hdfs命令查看 hdfs dfs -ls -R

Hadoop学习之NCDC天气数据获取的更多相关文章

  1. Hadoop学习之第一个MapReduce程序

    期望 通过这个mapreduce程序了解mapreduce程序执行的流程,着重从程序解执行的打印信息中提炼出有用信息. 执行前 程序代码 程序代码基本上是<hadoop权威指南>上原封不动 ...

  2. NCDC 天气数据的预处理

    "Hadoop: The Definitive Guild" 这本书的例子都是使用NCDC 天气数据的,但由于书的出版和现在已经有一段时间了,NCDC现在提供的原始数据结构已经有了 ...

  3. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  4. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  5. Hadoop学习之旅三:MapReduce

    MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...

  6. [Hadoop] Hadoop学习历程 [持续更新中…]

    1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...

  7. Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门

    一.HDFS出现的背景 随着社会的进步,需要处理数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是却不方便管理和维护—>因此,迫切需要一种系统来管理多 ...

  8. Hadoop学习路线图

    Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...

  9. Hadoop学习(5)-- Hadoop2

    在Hadoop1(版本<=0.22)中,由于NameNode和JobTracker存在单点中,这制约了hadoop的发展,当集群规模超过2000台时,NameNode和JobTracker已经不 ...

随机推荐

  1. 「疫期集训day3」要塞

    战友们正讨论着他们曾经参加过凡尔登战役的父亲...在黎明前我们必须誓死坚守----法乌克斯要塞中弹尽粮绝的法军士兵 什么!今天又考状压和tarjan! 达成成就:连续两天复习数论和二分图 康乐康,这次 ...

  2. BUUCTF-BJD(更新V1.0)

    CTF-Day1 (PS:第一次写博客,就是想记录自己的一一步一步) Misc: 问卷调查 | SOLVED |题最简单的misc-y1ng | SOLVED |Real_EasyBaBa | SOL ...

  3. 控制流程之while循环, for循环

    条件循环:while,语法如下 while 条件: # 循环体 # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件... # 如果条件为假,那么循环体不执行,循环终止死循环 基本使用 ...

  4. day12 文件操作(下)

    目录 一.x模式(控制文件操作模式,与rwa同级) 1 特点 2 格式 二.b模式(控制文件读写内容的模式,与t同级) 1.b模式和t模式的区别 2 b模式应用 3 循环读取文件 三.文件操作的其他方 ...

  5. CSS 的层叠上下文是什么

    层叠上下文是 HTML 中的一个三维的概念,每个层叠上下文中都有一套元素的层叠排列顺序.页面根元素天生具有层叠上下文,所以整个页面处于一个“层叠结界”中. 层叠上下文的创建: 页面根元素:html z ...

  6. networkX.core_number(graph)

    今天在学习别人特征工程的时候,看到这样一个函数,max_kcore = pd.DataFrame(list(nx.core_number(graph).items()), columns=[" ...

  7. Shaderlab-10chapter-立方体纹理、玻璃效果

    10.1.1天空盒子 window - Lighting - skyMaterial 创建mat,shader选自带的6 side shader 确保相机选skybox 如果某个相机需要覆盖,添加sk ...

  8. [USACO3.1]形成的区域(扫描线+离散化)

    [USACO3.1]形成的区域(P6432) 日期:2020-05-31 目录 [USACO3.1]形成的区域(P6432) 一.题意分析 二.算法分析 1. 暴力 0). 初始状态(红点为原点) 1 ...

  9. 集训 T1-找试场

    大致题意: 按照给定的指令移动,输出最后到达的点. 若没有走动过则输出(0,0). 基本思路 这题就是模拟,主要是判断指令的时候不太好判断, 先用字符串把指令读取进来,看看第一位是否是数字(如果是数字 ...

  10. CUDA中关于C++特性的限制

    CUDA中关于C++特性的限制 CUDA官方文档中对C++语言的支持和限制,懒得每次看英文文档,自己尝试翻译一下(没有放lambda表达式的相关内容,太过于复杂,我选择不用).官方文档https:// ...