HIVE 牛刀小试 (伪分布式版本)

最近一直用hadoop处理数据,处理完以后要对数据进行分析,由于我们的数据不是很大,每次我都是把要分析的文件从hdfs下载到本地,然后再用python、shell脚本进行分析与统计,那hadoop生态系统中都有什么数据分析工具呢,目前据我所知,有两个:pig和hive。因为pig我以前看过,需要用Pig Lation(pig自己的脚本语言),为了省事,我这次直接看基于sql语句的hive。pig与hive的区别《Hadoop in action》书中是这么定义的:

Pig----A high-level data flow language

Hive------A SQL-like data warehouse infrastructure

废话不多说,直接实战:

第一步:配置hadoop环境

首先需要在本地搭建好hadoop运行环境,这里我用的是伪分布式版,具体可以参照我这篇文章:http://blog.csdn.net/jiacai2050/article/details/7872708

第二步:下载hive

在apache的官网,我下载的是这么一个文件hive-0.11.0.tar.gz

第三步:配置hive

由于hive需要存放metastore,这里我们使用JDBC compliant(即JDBC兼容)数据库,hive自带了一个Derby,我们用自带的即可,这里无需做任何操作。

第四步:配置环境变量

把hive/bin加到path中,编辑.profile文件,可以输入以下命令:

vim ~/.profile

我机器的配置这么样的:

export HADOOP_HOME="/home/liujiacai/hadoop"
export HIVE_HOME="/home/liujiacai/hive"
export PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATH 

这么配置好,以后在执行hadoop相关命令时有可能会出现个warning,提示$HADOOP_HOME is deprecated,在hadoop/conf/hadoop-env.sh文件中添加这么一行就行了:

export HADOOP_HOME_WARN_SUPPRESS="TRUE"

然后再执行以下命令:

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

这些命令主要是创建hive数据的存放路径,并让用户所属组有写 

到现在hive就应该能正常运行了。

-----------------------------------------------------------------------------HIVE常用操作---------------------------------------------------------------------------------------------------------------------------------

1.创建表的完整语句

create [external] table active(ukey string, docic int)
comment "this is for analysing user's reading history"
partitioned by (month int, day int)
clustered by (ukey) into 32 buckets
row format delimited
fields terminated by '\t'
lines terminated by '\n'
stored as sequencefile/textfile

[external]表示可选项,表示创建表的数据来源于已有的hdfs文件

partitioned by语句主要是为了处理子文件夹的情况

clustered by语句主要是控制生成的part-0000*的文件个数

stored as语句说明表文件存放的格式,现在只有两种。

2.partitioned by语句用法

我的情况,日志文件按日存放,每一天一个文件夹,像

/data/log/2013/10/10

/data/log/2013/10/11

/data/log/2013/10/12

..................

/data/log/2013/11/10

/data/log/2013/11/11

....................

这样的形式,为了把这些文件中的数据存放到hive的表中,我们需要用partitioned

我们首先创建这么一个表

create external table log(ukey string, docic int)
partitioned by (month int, day int)
row format delimited
fields terminated by '\t';

然后在用这条语句进行log表的修改

alter table log add partition(month=10,day=10) location '/data/log/2013/10/10'

这样就把10月10号这天的日志包含进log表了

3.表的连接join

一个模板:

insert overwrite table query_result
select pv.* u.gender, u.age
from page_view pv JOIN user u ON (pv.userid = u.id);

现在hive中的join只支持“相等”连接。

时间: 2013-09-16

HIVE 牛刀小试 (伪分布式版本)的相关文章

安装Hadoop1.0.4伪分布式的方法

 一.使用环境 操作系统:Ubuntu12.04 Hadoop版本:1.0.4 二.Hadoop官网安装手册  单机安装分为"standalone"和"pseudo-distributed"两种模式,我使用的是伪分布式模式. 手册的安装步骤很详细,没有必要当翻译工了.但是手册为了通用性,牺牲了一些关键问题的讨论.第三节中提及一下. 三.手册缺陷  手册主要有两个问题没有说清楚: 1.Hadoop安装在哪个目录下好? 选择一般有两种:/usr/local和家目录下.我

《深入理解大数据:大数据处理与编程实践》一一2.2 单机和单机伪分布式Hadoop系统安装基本步骤

2.2 单机和单机伪分布式Hadoop系统安装基本步骤 默认情况下,Hadoop被配置成一个以非分布式模式运行的独立Java进程,适合程序员在本地做编程和调试工作.Hadoop也可以在单节点上以伪分布式模式运行,用不同的Java进程模拟分布式运行中的各类节点(NameNode.DataNode.JobTracker.TaskTracker和Secondary NameNode).2.2.1 安装和配置JDK Hadoop是以Java语言写成,因而需要在本地计算机上预先安装Java 6或者更新版本

HBase伪分布式安装(HDFS)+ZooKeeper安装+HBase数据操作+HBase架构体系

HBase1.2.2伪分布式安装(HDFS)+ZooKeeper-3.4.8安装配置+HBase表和数据操作+HBase的架构体系+单例安装,记录了在Ubuntu下对HBase1.2.2的实践操作,HBase的安装到数据库表的操作.包含内容1.HBase单例安装2.HBase伪分布式安装(基于Hadoop的HDFS)过程,3.HBase的shell编程,对HBase表的创建,删除等的命令,HBase对数据的增删查等操作.4.简单概述了Hbase的架构体系.5.zookeeper的单例安装和常用操

分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经非常详细了,但是.咳咳,太长了,我就稍微简单点的来概括,其实Git在MAC和Ubuntu上的体验是最好的,不过搞Android开发的我相信绝大多数人还是用windows吧,当然不排除个例 廖雪峰教程:http://www.liaoxuefeng.com/wiki/001373951630592960

分布式版本控制系统入门:学习和对比Bazaar、Mercurial和Git的使用方法

简介:您是否对分布式版本控制感兴趣,但是又被一大堆行话弄糊涂了?本文介绍三种主要的系统 (Git.Mercurial 和 Bazaar),讨论采用分布式工作流的一些优点,比较分布式版本控制的常用操作. 简介 在过去几年,对于分布式版本控制可以给开发过程提供的益处有许多争论.最近,分布式 工具已经很成熟了.尽管分布式工具的一些优点最初可能不明显,但是从长期来看,它们提供的灵活性是 非常有意义的.阅读完本文之后,您应该能够开始使用分布式版本控制系统,基本了解分布式模型能够提 供的优点. 围绕分布式版

大数据-hadoop伪分布式环境搭建

问题描述 hadoop伪分布式环境搭建 最近开始新学hadoop,想搭建个伪分布式环境,而自己的电脑配置不高,不能运行虚拟机,可以利用阿里云来搭建伪分布式运行环境吗? 解决方案 阿里云搞几台机器在一个局域网就可以搭建或者用单机模式 解决方案二: 嗯,单机模式是不是不用装虚拟机

单节点伪分布式spark安装

问题描述 单节点伪分布式spark安装 wordcount.take()括号中的参数怎么确定??? 解决方案 安装单节点伪分布式 CDH hadoop 集群Linux下单节点Hadoop伪分布式安装单节点伪分布式hadoop的安装与配置

Ubuntu上搭建Hadoop环境(伪分布式)

首先要了解一下Hadoop的运行模式: 单机模式(standalone)        单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为空.当配置文件为空时,Hadoop会完全运行在本地.因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程.该模式主要用于开发调试MapReduce程序的应用逻辑. 伪分布模式(Pseudo-Distributed

《Hadoop实战第2版》——2.1节在Linux上安装与配置Hadoop

2.1 在Linux上安装与配置Hadoop 在Linux上安装Hadoop之前,需要先安装两个程序: 1)JDK 1.6(或更高版本).Hadoop是用Java编写的程序,Hadoop的编译及MapReduce的运行都需要使用JDK.因此在安装Hadoop前,必须安装JDK 1.6或更高版本. 2)SSH(安全外壳协议),推荐安装OpenSSH.Hadoop需要通过SSH来启动Slave列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分开集群

Hive源码编译及阅读修改调试

下载编译 在git上下载合适的master分支,使用maven编译.执行编译的目的在于,确保过程中生成的代码(Thrift)已经生成,这样导入IDEA就不会出现有些类找不到的情况. 执行源码编译分发命令,进入源码根目录执行: mvn clean package -Phadoop-2 -DskipTests -Pdist  这里必须指定profile为hadoop-2来支持hadoop 2.x版本 1.后续更改完源码后,还需执行该命令来编译打包.源码更改后需评价其对Hive各模块的影响(改动代码多