Hadoop学习之NCDC天气数据获取
期望目的
下载《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天气数据获取的更多相关文章
- Hadoop学习之第一个MapReduce程序
期望 通过这个mapreduce程序了解mapreduce程序执行的流程,着重从程序解执行的打印信息中提炼出有用信息. 执行前 程序代码 程序代码基本上是<hadoop权威指南>上原封不动 ...
- NCDC 天气数据的预处理
"Hadoop: The Definitive Guild" 这本书的例子都是使用NCDC 天气数据的,但由于书的出版和现在已经有一段时间了,NCDC现在提供的原始数据结构已经有了 ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...
- Hadoop学习之旅三:MapReduce
MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...
- [Hadoop] Hadoop学习历程 [持续更新中…]
1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...
- Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
一.HDFS出现的背景 随着社会的进步,需要处理数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是却不方便管理和维护—>因此,迫切需要一种系统来管理多 ...
- Hadoop学习路线图
Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...
- Hadoop学习(5)-- Hadoop2
在Hadoop1(版本<=0.22)中,由于NameNode和JobTracker存在单点中,这制约了hadoop的发展,当集群规模超过2000台时,NameNode和JobTracker已经不 ...
随机推荐
- Tensorflow教程(3)什么是张量?什么是数据流图?
Tensorflow = Tensor(张量) + flow(数据流图) 1.张量 张量可不是“麻辣烫”!张量是一个很抽象的概念,直观的来说,张量在tensorflow中就像一个杯子,起到保存数据的作 ...
- 读CSAPP第一章的收获
这个系列只写了CSAPP第三版对于我的收获. 里面的内容很多,我只写我以前不知道的,然后现在又觉得挺有用的内容. 没有很好的排版,将就看. Amadhl定律:主要观点,想要显著加速整个系统,必须提升全 ...
- JAVA基础笔记10-11-12-13-14
十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...
- 微信网页授权access_token和普通access_token爬坑
两者的区别: 1.相同点:两者的有效期都是7200s 2.不同点: ①.网页授权access_token无需用户授权,无需用户关注,在网页授权回调域名下可获取到code,通过code换取网页授权acc ...
- day44 初识数据库
目录 一.数据的演变 二.数据库 三.MySQL 1 基本原理 2 重要概念介绍 3 安装 4 启动 5 sql基本语句 6 环境变量的配置及系统服务制作 7 关于密码 8 统一编码 9 基本sql语 ...
- 07 Vue常见插件
项目功能插件 1.vue-router { path: '/', name: 'home', // 路由的重定向 redirect: '/home' } { // 一级路由, 在根组件中被渲染, 替换 ...
- Scala 面向对象(十三):隐式转换和隐式参数
隐式转换的实际需要=>指定某些数据类型的相互转化 1 隐式函数基本介绍 隐式转换函数是以implicit关键字声明的带有单个参数的函数.这种函数将会自动应用,将值从一种类型转换为另一种类型 隐式 ...
- JVM 专题一:虚拟机(一)
1. 虚拟机 1.1 什么是虚拟机? 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 所谓虚拟机,就是一台虚拟的计算机.它是 ...
- 数据可视化基础专题(六):Pandas基础(五) 索引和数据选择器(查找)
1.序言 如何切片,切块,以及通常获取和设置pandas对象的子集 2.索引的不同选择 对象选择已经有许多用户请求的添加,以支持更明确的基于位置的索引.Pandas现在支持三种类型的多轴索引. .lo ...
- Python pip 国内镜像大全及使用办法
Python pip 国内镜像大全及使用办法 一.国内镜像 清华 https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣 pip install -i http://p ...