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

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

最近一直用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只支持“相等”连接。

目录
相关文章
|
7月前
|
SQL 关系型数据库 MySQL
Hive跨集群和版本迁移
Hive跨集群和版本迁移
|
SQL 前端开发 Java
大数据平台底层技术-JAVA篇-如何动态加载不同版本的 HIVE JDBC 驱动 - 一文读懂JAVA的类加载机制 1
大数据平台底层技术-JAVA篇-如何动态加载不同版本的 HIVE JDBC 驱动 - 一文读懂JAVA的类加载机制
|
SQL 消息中间件 分布式计算
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
1037 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
|
7月前
|
SQL 关系型数据库 MySQL
Hive【环境搭建 01】【hive-3.1.2版本 安装配置】【含 mysql-connector-java-5.1.47.jar 网盘资源】【详细】
【4月更文挑战第6天】Hive【环境搭建 01】【hive-3.1.2版本 安装配置】【含 mysql-connector-java-5.1.47.jar 网盘资源】【详细】
450 1
|
SQL Java 大数据
大数据平台底层技术-JAVA篇-如何动态加载不同版本的 HIVE JDBC 驱动 - 一文读懂JAVA的类加载机制 2
大数据平台底层技术-JAVA篇-如何动态加载不同版本的 HIVE JDBC 驱动 - 一文读懂JAVA的类加载机制
|
SQL 存储 分布式计算
Hive 2.1.1 MetaException(在metastore中找不到消息:版本信息)
Hive 2.1.1 MetaException(在metastore中找不到消息:版本信息)
476 0
|
SQL 分布式计算 资源调度
spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试
spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试
1016 0
|
SQL Java Apache
【阿里云EMR实战篇】以EMR测试集群版本为例,详解 Flink SQL Client 集成 Hive 使用步骤
以测试集群版本为例(EMR-4.4.1)—— Flink SQL Client 集成 Hive 使用文档
【阿里云EMR实战篇】以EMR测试集群版本为例,详解 Flink SQL Client 集成 Hive 使用步骤
|
SQL 弹性计算 分布式计算
自建Hive数据仓库跨版本迁移到阿里云Databricks数据洞察
客户在IDC或者公有云环境自建Hadoop集群构建数据仓库和分析系统,购买阿里云Databricks数据洞察集群之后,涉及到数仓数据和元数据的迁移以及Hive版本的订正更新。
自建Hive数据仓库跨版本迁移到阿里云Databricks数据洞察
|
SQL 分布式计算 Hadoop
CDH6.2版本的HIVE性能测试
CDH6.2版本的HIVE性能测试
2159 0
CDH6.2版本的HIVE性能测试