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



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

hive查询ncdc天气数据的更多相关文章

  1. hadoop-hive查询ncdc天气数据实例

    使用hive查询ncdc天气数据 在hive中将ncdc天气数据导入,然后执行查询shell,可以让hive自动生成mapredjob,快速去的想要的数据结果. 1. 在hive中创建ncdc表,这个 ...

  2. NCDC 天气数据的预处理

    "Hadoop: The Definitive Guild" 这本书的例子都是使用NCDC 天气数据的,但由于书的出版和现在已经有一段时间了,NCDC现在提供的原始数据结构已经有了 ...

  3. 使用shell+awk完成Hive查询结果格式化输出

    好久不写,一方面是工作原因,有些东西没发直接发,另外的也是习惯给丢了,内因所致.今天是个好日子,走起! btw,实际上这种格式化输出应该不只限于某一种需求,差不多是通用的. 需求: --基本的:当前H ...

  4. Hadoop学习之NCDC天气数据获取

    期望目的 下载<Hadoop权威教程>里用到的NCDC天气数据,供后续在此数据基础上跑mapred程序. 操作过程 步骤一.编写简单的shell脚本,下载数据文件到本地文件系统 已知NCD ...

  5. 根据ip判断返回城市名称查询当地天气

    <?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...

  6. hive建表与数据的导入导出

    建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string ...

  7. C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市

    百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsC ...

  8. Hive常用操作之数据导入导出

    一.Hive数据导入导出 1.hive数据导出 很多时候,我们在hive中执行select语句,希望将最终的结果保存到本地文件或者保存到hdfs系统中或者保存到一个新的表中,hive提供了方便的关键词 ...

  9. 使用腾讯云无服务器云函数(SCF)分析天气数据

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 无服务器云函数(SCF)是腾讯云提供的Serverless执行环境,也是国内首款FaaS(Function as a Service ...

随机推荐

  1. 项目中nodejs包高效升级插件npm-check-updates

    nodejs包高效升级插件npm-check-updates 最近想升级npm的包 1.//常规的包升级方式/2.npm update (包) 到npm一搜发现了一个很好的升级工具 npm-check ...

  2. vim中使用sed去除网上copy的源代码行号和空格

    有些时候,在网上搜索到的代码都包含有行号,高亮显示控件不支持直接提取,如: test.sh 01 #!/bin/bash 02 echo “aaa” 简单的去掉行号和前面的空格: 方案一: 1.vim ...

  3. nginx服务

    nginx服务 一.nginx安装 1.yum安装:yum  -y install nginx 注:centos 7中yum安装nginx前需要先安装 epel-release 2.源码包安装 安装之 ...

  4. Android Media应用开发

    Java层API : AudioRecord 采集音频(PCM格式)AudioTrack 播放音频 Camera 用来采集摄像头的数据Surface / SurfaceView / GLSurface ...

  5. Android开发--多线程之Handler

    前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的 ...

  6. [原创]java WEB学习笔记38:EL 中的 11个 隐含对象 详解

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. python 3 并发编程之多进程 multiprocessing模块

    一 .multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程. ...

  8. linux FAQ(zz)

    1.Which is the command used to find the available shells in your Operating System Linux ? Ans : $ech ...

  9. Docker-Mac安装

    1. 下载安装包2. 安装3. 运行,允许docker获得系统权限,它需要将Mac网卡链接至Docker app.4. 验证 打开terminaldocker versionFengZhendeMac ...

  10. 使用 sqoop 将 hive 数据导出到 mysql (export)

    使用sqoop将hive中的数据传到mysql中 1.新建hive表 hive> create external table sqoop_test(id int,name string,age ...