下载气象数据并自动解压整合

首先hadoop权威指南书中的气象数据的地址为:ftp://ftp.ncdc.noaa.gov/pub/data/gsod/YEAR/gsod_YEAR.tar

其中YEAR是年份,从1901年到1928年的数据里面都是空的,不用下载了。

使用java程序进行下载:

开始用了多线程下载---然后第四个线程启动的时候就爆了,显示 超过最大connection数(530) ,可能是全球一起超过的吧....

然后将多线程改成了单线程,有时下载10左右就不动了,感觉是网络问题,毕竟那个网站进去就很慢。

java下载代码:

package file;

import javax.swing.plaf.SliderUI;

public class Main {
	
	public static void main(String[] args) throws Exception{
		
		FileThread file = new FileThread();
		for (int i=1929;i<=2000;i++){
			
//			new FileThread(new Integer(i).toString()).start();
			file.setYear(new Integer(i).toString());
			file.run();
			
		}
	}
}
package file;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class FileThread extends Thread{
	
	String year;
	
	public FileThread(){}
	public FileThread(String year){
		this.year = year;
	}
	
	public void setYear(String year){
		this.year = year;
	}
	
	@Override
	public void run() {
		
		InputStream input = null;
		FileOutputStream output = null;
		
		try {
			URL url = new URL("ftp://ftp.ncdc.noaa.gov/pub/data/gsod/"+year+"/gsod_"+year+".tar");
			input = url.openStream();
			
			output = new FileOutputStream(new File("F:/gsod/gsod_"+year+".tar"));
			int ls = 0;
			byte b[] = new byte[204800];
			
			while ((ls = input.read(b, 0, 204800))> -1){
				output.write(b, 0, ls);
				output.flush();
			}
			output.flush();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				if (output!=null)
					output.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if (input!=null)
					input.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

下载气象数据并自动解压整合_第1张图片

点击下载文件链接

然后需要解压,合并,写了一个shell脚本:

#!/bin/bash
read x
read y
read filename
for ((i=x;i<=y;i++))
do
        tar -xvf *${i}.tar
        gzip -d *.op.gz
        cat *.op >> ${filename}
        rm -f *.op
done
下载气象数据并自动解压整合_第2张图片

下载气象数据并自动解压整合_第3张图片



你可能感兴趣的:(下载气象数据并自动解压整合)