hadoop ncdc数据下载方法

0
分享 2015-12-19
我在看《Hadoop权威指南》时,里面提供了NCDC天气数据样本,提供的下载链接是:
点击打开链接,但是里面只提供了1901和1902这两年的数据,这未免也太少了点!完全称不上“BIG DATA”,于是我现在提供一个方法获取1901年到2014年的天气数据样本。在网站:
点击打开链接中提供了这些数据包,虽然每一个包都只有几十K,但是数据包太过于多了,原来是太少了,现在是太多了,都是个问题,不可能一个个手动去下载,其实编写几行shell语句就可以轻松解决这个问题!
准备工作:要是在Ubuntu或者是Debian下,应该系统已经安装了wget这个工具了,要是没有安装,可以用下面的命令进行安装:
sudo apt-get install wget 

要是在Mac OS X 下,系统是没有默认安装wget的,有两个方法来安装wget,其一是自己手动下载源代码包来自己编译安装,这样的最大问题就是它的依赖包有点多,要一个个编译,很麻烦。所以推荐第二个方法:先用下面的命令安装Homebrew:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

安装 完成后用下面的命令安装wget:
brew install wget



完成后,在终端输入下列语句,当然也可以先把下列语句保存为一个shell程序文件,并赋予其执行权限,然后再运行。推荐就直接输入:
#! bin/bash
for i in {1901..2014}
do
cd /Users/Guo/Documents/NCDC
wget --execute robots=off -r -np -nH --cut-dirs=3 -R index.html http://ftp3.ncdc.noaa.gov/pub/data/noaa/isd-lite/$i/
cd isd-lite/$i
mkdir -p /Users/Guo/Documents/NCDC/files/$i
cp *.gz /Users/Guo/Documents/NCDC/files/$i
cd /Users/Guo/Documents/NCDC
rm -r isd-lite/
done

简单地解释一下:对变量i从1901到2014递增,做后面的循环操作,“/Users/Guo/Documents/NCDC”以及“/Users/Guo/Documents/NCDC/files”是我自己建的文件夹,来用保存数据,所以呢,你要自己建立文件夹来保存数据,“$i”是对变量i当前值的引用、、、
我已经对不“友好”的部分做了优化,让每一年的数据包存入相对应的文件夹,以前我把所有文件包都放在一个文件夹内,才下几十年的数据一打开文件夹直接把我的Finder拖到假死,几分钟之后才醒来,我的是固态硬盘啊!现在有相应的年份文件夹,方便管理数据!
经过这几天的反复下载与删除,但还是没有下载完成,我发现在下载一个数据包特别多的时候,比如超过一W,bash会报一个Argument list too long的错误,这是因为当前年份文件夹下的数据包太多了,超过了bash的默认值。这导致下载完的数据包没有复制到files文件夹下的年份文件夹下,或者不能删除下载的数据包,要解决这个问题有其他的方法来绕过,但是我觉得太麻烦。我就想,干嘛要复制一次呢,我们直接保存原始下载的文件夹就行了嘛,并且是每个年份是分开存储的!并且我会让wget只保存*.gz文件!于是就有了下面的最新最完美版本!
#! bin/bash
for i in {1901..2014}
do
cd ~/noaa/
wget --execute robots=off -r -np -nH --cut-dirs=4 -R index.html* http://ftp3.ncdc.noaa.gov/pub/data/noaa/isd-lite/$i/
done

转自http://blog.csdn.net/lzslywl/a ... 78731
文章来源:http://blog.csdn.net/liufeng1980423/article/details/39004095

0 个评论

要回复文章请先登录注册