使用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;



最新文章

  1. insert操作卡死的处理过程
  2. 【转】HTML转义字符大全
  3. 用mysql触发器实现log记录
  4. sort函数用法
  5. Python批量修改文件名
  6. .gitignore的使用:首次创建及事后添加无法生效.
  7. MySQL查询优化 (一)
  8. 实现 winform 异步跨线程访问UI控件
  9. TCP流量控制协议
  10. 关于GNU软件的版本号命名规则
  11. 常用的HTTP状态码如下
  12. 【转】请求处理机制其二:Django中间件的解析
  13. C++一个类对象的大小计算
  14. tab$被删除恢复指南
  15. 关于.babelrc中的stage-0,stage-1,stage-2,stage-3
  16. 性能优化之永恒之道(实时sql优化vs业务字段冗余vs离线计算)
  17. JS中this的那些事儿
  18. 接口测试maven管理
  19. win10 下Oracle安装
  20. Fiddler 502问题

热门文章

  1. 密码学笔记(5)——Rabin密码体制和语义安全性
  2. RedHat服务器搭建Jenkins
  3. linux操作mysql命令快速手记 — 让手指跟上思考的速度(二)
  4. 2018-8-10-WPF-鼠标移动到列表上-显示列表图标
  5. Luogu P1401 城市(二分+网络流)
  6. [JZOJ5969] 世界线修理(欧拉回路)
  7. Quick BI 的模型设计与生成SQL原理剖析
  8. HZOI20190829模拟33题解
  9. ROS 日志消息(C++)
  10. 19-10-15-W