博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive查询ncdc天气数据
阅读量:5881 次
发布时间:2019-06-19

本文共 2302 字,大约阅读时间需要 7 分钟。

使用hive查询ncdc天气数据
在hive中将ncdc天气数据导入,然后执行查询shell,可以让hive自动生成mapredjob,快速去的想要的数据结果。
1. 在hive中创建ncdc表,这个表用来存放ncdc的数据
create table ncdc (
year string,
month string,
data string,
time string,
air string,
a string,
b string,
c string,
d string,
e string,
f string,
g string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
TERMINATED BY '\t' 是说这个表子,使用tab键分割。
2. 处理原始的数据,因为原始的数据是这样的:
1901 01 01 06   -78 -9999 10200   270   159     8 -9999 -9999
1901 01 01 13   -72 -9999 10200   290    82     4 -9999 -9999
1901 01 01 20   -94 -9999 10200     0     0     8 -9999 -9999
1901 01 02 06   -61 -9999 10183   180    82     8 -9999 -9999
1901 01 02 13   -56 -9999 10176   180    98     8 -9999 -9999
1901 01 02 20   -28 -9999 10175   180    98     8 -9999 -9999
1901 01 03 06   -67 -9999 10170   200    98     6 -9999 -9999
1901 01 03 13   -33 -9999 10174   230   118     8 -9999 -9999
1901 01 03 20   -28 -9999 10174   230   118     8 -9999 -9999
1901 01 04 06   -33 -9999 10231     0     0     8 -9999 -9999
1901 01 04 13   -44 -9999 10226   230    82     8 -9999 -9999
中间不是制表符,而是空格键,所以写了一个java程序,将文件夹中的 所有的数据统计,转换到一个文件中。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.StringTokenizer;
public class removeAnno {
 static String ofile="summary";
 static BufferedWriter bw=null;
 public static void main(String[] args) throws Exception {
  bw = new BufferedWriter(new FileWriter(ofile));
  File file1 = new File("C:\\Users\\Administrator\\ncdc2");
  File[] listfile = file1.listFiles();
  for (int i=0;i<listfile.length;i++){
   rm("C:\\Users\\Administrator\\ncdc2\\"+listfile[i].getName());
   //System.out.println(listfile[i].getName());
  }
 }
static void rm(String filename) throws Exception{
 File file = new File(filename);
 BufferedReader br = new BufferedReader(new FileReader(file));
 String str=br.readLine();
 while(str!=null){
  //进行分割处理
  String tmp="";
  StringTokenizer st = new StringTokenizer(str);
  while (st.hasMoreTokens()){
   tmp=tmp+st.nextToken()+"\t";
  }
  bw.write(tmp+"\n");
  bw.flush();
  str=br.readLine();
 }
}
}
3. 导入数据到hive中
load data local inpath '/opt/software/ncdc/summary' into table ncdc
4. 查询数据
可以查询每一年的平均气温,最高气温,最低气温等等,也可以使用分组函数,和MySQL操作差不多
select year,avg(air) from ncdc group by year;

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/mrcharles/p/4731726.html

你可能感兴趣的文章
Java 数组 之 一维数组 删除 元素
查看>>
【学习笔记】Android控件的使用
查看>>
mac 下载软件无法将程序拖移至app 出现错误
查看>>
关于int(1)和int(10)的区别
查看>>
动态域名解析制作
查看>>
多线程消费者和制造者的金典案例!!
查看>>
Docker快速验证HTML导出PDF高效方案
查看>>
fh admin bootstrap 模版下载 框架
查看>>
Linux之rpm包管理
查看>>
前端文件路径
查看>>
LINUX --权限
查看>>
Tomcat的优点/功能及安装
查看>>
Spring @transactional注解和synchronized同步锁同时使用不能同步的问题
查看>>
Apache的PHP-FPM-启用实例
查看>>
Script error.深度测试
查看>>
基于webpack构建的vue项目实现实时更新视图
查看>>
强大而优雅,API 研发管理 EOLINKER 新版正式发布!
查看>>
校园考勤不再形同虚设
查看>>
bullmind-在线思维导图软件,在线流程图软件,在线uml软件
查看>>
Shell curl 和 wget 使用代理IP
查看>>