hive实战

article/2025/10/7 21:15:28

1. 安装hive

2. hive实战

3. hive存储模型

4. 深入hql查询语言

5. 参考资料及代码下载 

<1>. 安装hive  

下载hive,下载地址http://mirror.bjtu.edu.cn/apache//hive/ ,解压该文件:

xuqiang@ubuntu:~/hadoop/src/hive$ tar zxvf hive-0.7.0-bin.tar.gz

设置环境变量:

xuqiang@ubuntu:~/hadoop/src/hive$ cd hive-0.7.0-bin/

xuqiang@ubuntu:~/hadoop/src/hive/hive-0.7.0-bin$ export HIVE_HOME=`pwd`

添加HIVE_HOME到环境变量PATH中:

xuqiang@ubuntu:~/hadoop/src/hive$ export PATH=$HIVE_HOME/bin:$PATH;

在运行hive之前,请确保变量HADOOP_HOME已经设置,如果没有设置,可以使用export命令设置该变量。

然后需要在hdfs上创建如下的目录来保存hive相关的数据。

 

xuqiang@ubuntu:~ / hadoop / src / hive $   $ HADOOP_HOME / bin / hadoop fs - mkdir   / tmp
xuqiang@ubuntu:~
/ hadoop / src / hive $   $ HADOOP_HOME / bin / hadoop fs - mkdir   / user / hive / warehouse
xuqiang@ubuntu:~
/ hadoop / src / hive $   $ HADOOP_HOME / bin / hadoop fs -chmod g + / tmp
xuqiang@ubuntu:~
/ hadoop / src / hive $   $ HADOOP_HOME / bin / hadoop fs -chmod g + / user / hive / warehouse

 

此时运行hive的环境已经准备好了,在命令行中键入如下命令开始运行hive:

 

xuqiang@ubuntu:~ / hadoop / src / hive / hive- 0.7 . 0 -bin $   $ HIVE_HOME / bin / hive

 

<2>. hive实战  

这里我们将完成这样的一个过程,首先创建一个表,从本机上加载数据到该表中,查询该表,得到我们感兴趣的数据。

首先创建表(具体语法将在下面给出):

 

hive >  create table cite ( citing INT ,  cited INT )
>  row  format  delimited
>  fields terminated by ' , '
>  stored as textfile ;

 

创建完表之后,我们可以使用show tables命令查看新建的表:

 

hive >  show tables ;
OK
cite
Time  taken:  1.257  seconds

 

查看新建表的结构:

 

hive >  describe cite ;
OK
citing int
cited int
Time  taken:  0.625  seconds

 

我们加载本地数据到该表中去:

 

hive >  load data local inpath ' / home / xuqiang / hadoop / data / cite75_99 . txt'
>  overwrite into table cite ;
Copying data from file:
/ home / xuqiang / hadoop / data / cite75_99 . txt
Copying file: file:
/ home / xuqiang / hadoop / data / cite75_99 . txt
Loading data to table default
. cite
Deleted hdfs:
// localhost: 9000 / user / hive / warehouse / cite
OK
Time  taken:  89.766  seconds

 

查询前10行数据:

 

hive >   select  * from cite limit  10 ;
OK
NULL NULL
3858241   956203
3858241   1324234
3858241   3398406
3858241   3557384
3858241   3634889
3858242   1515701
3858242   3319261
3858242   3668705
3858242   3707004
Time  taken:  0.778  seconds

 

查询该文件中存在多少条数据,这时hive将执行一个map-reduce的过程来计算该值:

 

hive >   select  count ( 1 )  from cite ;
Total MapReduce jobs 
=   1
Launching Job 
1  out of  1
Number of reduce tasks determined at compile 
time 1
In order to change the average load 
for  a reducer  ( in bytes ) :
set  hive . exec . reducers . bytes . per . reducer =< number >
In order to limit the maximum number of reducers:
set  hive . exec . reducers . max =< number >
In order to 
set  a constant number of reducers:
set  mapred . reduce . tasks =< number >
Starting Job 
=  job_201106150005_0004 ,  Tracking URL  =  http: // localhost: 50030 / jobdetails . jsp?jobid = job_201106150005_0004
Kill 
Command   =   / home / xuqiang / hadoop / src / hadoop- 0.20 . 2 / bin /../ bin / hadoop job -Dmapred . job . tracker = localhost: 9001  -kill job_201106150005_0004
2011 - 06 - 15   05 : 33 : 20 , 724  Stage- 1  map  =   0 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 33 : 46 , 325  Stage- 1  map  =   2 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 33 : 49 , 827  Stage- 1  map  =   3 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 33 : 53 , 208  Stage- 1  map  =   4 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 33 : 55 , 259  Stage- 1  map  =   7 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 34 : 40 , 450  Stage- 1  map  =   9 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 34 : 52 , 706  Stage- 1  map  =   48 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 34 : 57 , 961  Stage- 1  map  =   50 % ,  reduce  =   0 %
2011 - 06 - 15   05 : 35 : 28 , 420  Stage- 1  map  =   50 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 35 : 36 , 653  Stage- 1  map  =   58 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 35 : 40 , 844  Stage- 1  map  =   61 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 35 : 49 , 131  Stage- 1  map  =   62 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 35 : 56 , 428  Stage- 1  map  =   67 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 36 : 34 , 380  Stage- 1  map  =   90 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 36 : 52 , 601  Stage- 1  map  =   100 % ,  reduce  =   17 %
2011 - 06 - 15   05 : 37 : 10 , 299  Stage- 1  map  =   100 % ,  reduce  =   67 %
2011 - 06 - 15   05 : 37 : 16 , 471  Stage- 1  map  =   100 % ,  reduce  =   100 %
Ended Job 
=  job_201106150005_0004
OK
16522439
Time  taken:  274.531  seconds

 

好的,最后我们删除刚刚新建的表:

 

hive >  drop table cite ;
OK
Time  taken:  5.724  seconds

 

<3>. 存储模型  

通常情况下hive将数据存储到hadoop上/user/hive/warehouse目录下,关系型数据库使用索引index去加快查询速度, 而hive使用的是以恶搞所谓的partition columns的概念,例如比如说存在某一行叫做state,可以根据state中存储的数据值,将state分为50个partitions。如果存在 date列的话,那么通常按照时间进行partition,hive在对分区的列上进行查询的速度会比较快,原因是hadoop在数据存储上将不同的分区 存储在了不同的目录文件下。例如对于上面的列state和date,可能的存储模型如下:

clip_image002

当然每个分区内的数据文件可能还是比较大,幸好在hive中存在一个所谓的buckets的概念,buckets根据hash值将数据分割成更小的数据文件,还是上面的例子,如果使用buckets的话,可能的存储模型如下:

clip_image004

<4>. 深入hql  

我们将通过实际hql语句来分析hql的语法。

clip_image006

该条语句创建表page_view,表中有5列,同时在见表语句中指出了各个列的数据类型,在hive中内建支持的数据类型如下:

clip_image008

这些类型的层次结构如下:

clip_image010

层次结构中允许从子类型隐式的转换成父类型。

接着回到上面的见表语句,在列ip中添加了注释:

Ip STRING COMMENT (“Ip address of user”)

然后建表语句中添加了表的分区:

Partitioned by (dt string, country string)

注意的是这里的两列并不是表中的列,实际上这里的分区的两列dt和country仅仅是为了分区,实际上可能并不存储这些数据。

Additionally the partitioned by clause defines the partitioning columns which are different from the data columns and are actually not stored with the data. When specified in this way

然后建表语句指定buckets大小,这里是32。

最后指定数据源的文件格式。

好的现在我们给出更多的表操作的例子,由于sql极其相似,这里仅仅给出了语法,并没有给出解释。

clip_image012

描述表page_view结构。

clip_image014

改变表的名字

clip_image016

新增加一行

clip_image018

删除分区

clip_image020

删除表

clip_image022

显示所有的表

clip_image024

从文件page_view.txt文件将数据加载到表page_view中,注意的是这里的路径可以使用绝对路径或者相对路径。这里使用了local,表明数据文件的来源是本地,而不是在hdfs上。

Hql上的查询语句和sql很类似,这里没有一一给出,下面仅仅将给出hql中运算符和内建聚类函数。

运算符:

clip_image026

内建聚类函数:

clip_image028

<5>. 参考资料及代码下载  

http://wiki.apache.org/hadoop/Hive/GettingStarted


http://chatgpt.dhexx.cn/article/ZT5bD19q.shtml

相关文章

hive实战 - qiang.xu - 博客园

hive实战 - qiang.xu - 博客园 hive实战 - qiang.xu - 博客园 hive实战 1. 安装hive 2. hive实战 3. hive存储模型 4. 深入hql查询语言 5. 参考资料及代码下载 <1>. 安装hive 下载hive&#xff0c;下载地址http://mirror.bjtu.edu.cn/apache//hive/&#xff0c;解压该…

《深度学习之PyTorch物体检测实战》—读书笔记

随书代码 物体检测与PyTorch 深度学习 为了赋予计算机以人类的理解能力与逻辑思维&#xff0c;诞生了人工智能&#xff08;Artificial Intelligence&#xff0c; AI&#xff09;这一学科。在实现人工智能的众多算法中&#xff0c;机器学习是发展较为快速的一支。机器学习的思…

3D图像重建中的颜色预测误差研究

目录 整体思路&#xff1a;1、本课题的目的、意义1. 描述图像2. 标注图像3、CNN 3D图像重建中的颜色预测误差研究摘 要1 绪 论1.1背景与意义1.2 课题研究内容1.3 3D重建国内外研究现状1.4 深度学习算法研究现状1.4.1 应用于自然语言处理1.4.2 提取立体图像视觉特征1.4.3 图像颜…

python项目开发实例视频-零基础入门Python Web开发到项目实战精讲

课程章节 第1章Mysql基础 1-数据库简介 2-数据库的安装及配置 3-SQL语句规范 4-数据库的相关操作 5-MySQL中支持的数据类型简介 6-MySQL中的存储引擎简介 7-MySQL数据表的创建 8-测试数据类型 9-测试字符串类型 10-测试字符串类型 11-测试日期时间类型 12-测试主键…

Hadoop 和 Spark 知识点整理汇总

文章目录 前言一、LINUX 系统常用命令汇总二、Hadoop 常用命令汇总三、Hadoop 基本概念1. Hadoop 特性2. Hadoop 架构2.1 Hadoop 集群2.2 HDFS2.3. YARN 四、Hadoop HDFS命令1. HDFS 命令通用格式2. 创建与查看 HDFS 目录3. HDFS 与本地计算机之间的文件复制4. 复制与删除 HDFS…

IT转互联网的转行经验

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; 架构系列文章 个人经历 选择大学专业 2010年&#xff0c;我20&#xff0c;手机还是2G网络&#xff0c;电脑还是window x&#xff0c;高中毕业&#xff0c;父母只是农村建筑工人&#xff0c;对社会工作完全…

这一套封面的程序员专业书籍你读过哪一本?

以往我们总盯着畅销书&#xff0c;经典书&#xff0c;新书&#xff0c;今天给大家介绍Packt Publishing的程序员专业书籍。这一套封面的程序员书你读过哪一本&#xff1f; 1、Python图像处理实战 [印度] 桑迪潘戴伊&#xff08;Sandipan Dey&#xff09; 著&#xff0c;陈盈&…

[译]用R语言做挖掘数据《七》

时间序列与数据挖掘 一、实验说明 1. 环境登录 无需密码自动登录&#xff0c;系统用户名shiyanlou&#xff0c;密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境&#xff0c;实验中会用到&#xff1a; 1. LX终端&#xff08;LXTerminal&#xff09;: Linux命…

[学习笔记]黑马程序员-Hadoop入门视频教程

文章目录 参考资料第一章&#xff1a;大数据导论与Linux基础&#xff08;p1-p17&#xff09;1.1 大数据导论1.1.1 企业数据分析方向1.1.2 数据分析基本流程步骤明确分析的目的和思路数据收集数据处理数据分析数据展现报告攥写 1.1.3 大数据时代大数据定义大数据的5V特征应用场景…

[译]用R语言做挖掘数据《五》

介绍 一、实验说明 1. 环境登录 无需密码自动登录&#xff0c;系统用户名shiyanlou&#xff0c;密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境&#xff0c;实验中会用到程序&#xff1a; 1. LX终端&#xff08;LXTerminal&#xff09;: Linux命令行终端&a…

基于ROS的Most Stars开源代码汇总(自动驾驶汽车+RGBDSLAMv2+ROS2+人识别与跟踪等)

Star 200 https://github.com/CPFL/Autoware 用于城市自主驾驶的开源软件。 http://www.tier4.jp/ Autoware 用于城市自主驾驶的集成开源软件&#xff0c;由第四层维护。支持以下功能&#xff1a; 3D本地化3D映射路径规划路径跟随加速/制动/转向控制数据记录汽车/行人/物体检…

WEKA使用(基础配置+垃圾邮件过滤+聚类分析+关联挖掘)

声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究。 2)本小实验工作环境为Windows系统下的WEKA,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析,第三是关联挖掘。 3)本文由于过长,且实验报告内的评估观点有时不一定正确,希…

CUDA 初体验

CUDA Visual ProfilerCUDA编程指导 shared memoryPage locked out memory C CUDA 调用CUDA 编程介绍CUDA 数据同步 CUDA Visual Profiler 在上180645课程的时候&#xff0c;里面谈到使用CUDA来做矩阵乘法和k均值聚类的加速。在使用n卡的时候&#xff0c;有一个Visual Profile…

LogCluster算法

LogCluster - A Data Clustering and Pattern Mining Algorithm for Event Logs LogCluster - 事件日志的数据聚类和模式挖掘算法 Risto Vaarandi and Mauno Pihelgas TUT 数字取证和网络安全中心 塔林科技大学 爱沙尼亚塔林 0 概要 Abstract—Modern IT systems often pro…

机器学习,看这一篇就够了:回归算法,特征工程,分类算法,聚类算法,神经网络,深度学习入门

目录 前言 1机器学习概述 1.1机器学习简介 1.1.1机器学习背景 1.1.2机器学习简介 1.1.3机器学习简史 1.1.4机器学习主要流派 1.2机器学习、人工智能和数据挖掘 1.2.1什么是人工智能 1.2.2什么是数据挖掘 1.2.3机器学习、人工智能与数据挖掘的关系 1.3典型机器学习应…

Ubuntu18.04下Opencv的安装及使用实例

本文主要介绍了在Ubuntu18.04系统下练习编译、安装著名的C/C图像处理开源软件库Opencv 3.4.12&#xff08;过程多&#xff0c;耗时长&#xff0c;需要耐心和细心&#xff09; 目录 一、Opencv简介 二、Opencv安装 1.安装环境 2.下载Opencv3.4.12 3.解压安装包 4.使用cmak…

处理器架构分类

一 X86和X64 X86和X64分别代表Intel 32位和64位的处理器&#xff0c;这里有个前提是指Intel X86架构的处理器吧。而具体点应该是&#xff1a; 1. x86-32&#xff1a; 32位的X86处理器&#xff0c;平常会简写成x86 2. x86-64&#xff1a; 64位的X86处理器。平常会简写成x64 …

ARM 处理器架构简介

ARM 架构是构建每个 ARM 处理器的基础。ARM 架构随着时间的推移不断发展&#xff0c;其中包含的架构功能可满足不断增长的新功能、高性能需求以及新兴市场的需要。有关最新公布版本的信息&#xff0c;请参阅 ARMv8 架构。 ARM 架构支持跨跃多个性能点的实现&#xff0c;并已在许…

昇腾 (Ascend) AI 处理器:达芬奇架构

参考&#xff1a;《昇腾AI处理器架构与编程——深入理解CANN技术原理及应用》 目录 昇腾 AI 处理器背景主要的架构组成部件可扩展性 达芬奇架构 (DaVinci Architecture)计算单元矩阵计算单元CPU vs. GPU vs. Ascend改变矩阵的存储方式来提升矩阵计算的效率矩阵计算单元 (矩阵乘…

傻白入门芯片设计,指令集架构、微架构、处理器内核(十一)

早期计算机出现时&#xff0c;软件的编写都是直接面向硬件系统的&#xff0c;即使是同一计算机公司的不同计算机产品&#xff0c;它们的软件都是不能通用的,这个时代的软件和硬件紧密的耦合在一起&#xff0c;不可分离。 IBM为了让自己的一系列计算机能使用相同的软件,免去重复…