附录C 编译安装Hive
如果需要直接安装Hive,可以跳过编译步骤,从Hive的官网下载编译好的安装包,下载地址为http://hive.apache.org/downloads.html 。
C.1 编译Hive
$tar -zxf apache-hive-1.2.1-src.tar.gz
$mv apache-hive-1.2.1-src /app/compile/hive-1.2.1-src
编译Hive源代码的时候,需要从网上下载依赖包,所以整个编译过程机器必须保证在联网状态。编译执行如下脚本:
$cd /app/compile/hive-1.2.1-src
$export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
$mvn -Phadoop-2 -Pdist -DskipTests -Dmaven.javadoc.skip=true clean package
通过如下命令查看最终编译完成整个目录大小,可以看到大小为350M左右:
$du -s /app/compile/hive-1.2.1-src
C.2 安装Hive
C.2.1 解压缩并迁移
使用上一步骤编译好的Hive编译包移动到安装目录上,用如下命令解压缩hive安装文件:
$cd /app/compile/hive-1.2.1-src/packaging/target/
$mv apache-hive-1.2.1-bin.tar.gz /home/spark/work/
$cd /home/spark/work/
$tar -zxf hive-1.2.1-bin.tar.gz
改名并迁移到/app/soft目录下:
$cd /app/spark
$mv apache-hive-1.2.1-bin /app/spark/hive-1.2.1
$ll /app/soft
图 附录C‑2 Hive移动到/app/soft目录下
C.2.2 下载MySql驱动并放到Hive的lib目录下
到mysql官网进入下载页面http://dev.mysql.com/downloads/connector/j/,默认情况下是Windows安装包,这里需要选择Platform Independent版本下载zip格式的文件
图 附录C‑3 MySql驱动下载界面
把下载的hive安装包和mysql驱动包,使用如下命令放到Hive的lib目录下:
$cd /home/spark/work
$mv mysql-connector-java-5.1.34-bin.jar /app/soft/hive-1.2.1/lib
使用如下命令打开/etc/profile文件,设置如下参数:
export HIVE_HOME=/app/soft/hive-1.2.1
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:$HIVE_HOME/bin
进入hive-1.2.1/conf目录,复制hive-env.sh.templaete为hive-env.sh并进行配置:
$cp hive-env.sh.template hive-env.sh
分别设置HADOOP_HOME和HIVE_CONF_DIR两个值:
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/app/spark/hadoop-2.7.2
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/app/soft/hive-1.2.1/conf
创建hive-site.xml配置文件,在该配置文件中加入配置内容
hive默认为derby数据库,derby数据只运行单个用户进行连接,这里需要调整为mysql数据库,以下为修改配置内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExsit=true; characterEncoding=UTF-8</value>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<name>javax.jdo.option.ConnectionUserName</name>
<name>javax.jdo.option.ConnectionPassword</name>
<name>datanucleus.readOnlyDatastore</name>
<name>datanucleus.fixedDatastore</name>
<name>datanucleus.autoCreateSchema</name>
<name>datanucleus.autoCreateTables</name>
<name>datanucleus.autoCreateColumns</name>
C.3 启动Hive并验证
实际使用时,一般通过后台启动metastore和hiveserver实现服务,命令如下:
hive> create table test(a string, b int);
mysql> select TBL_ID, CREATE_TIME, DB_ID, OWNER, TBL_NAME,TBL_TYPE from TBLS;
C.4.1 准备数据
交易数据存放在该系列配套资源的/saledata目录下,把这些数据文件上传到master节点的/home/spark/word目录下。
启动HDFS、YARN和Hive,启动完毕后创建Hive数据库
启动Hadoop集群,进入Hive命令行操作界面,使用如下命令创建三张数据表:
l tbDate定义了日期的分类,将每天分别赋予所属的月份、星期、季度等属性,字段分别为日期、年月、年、月、日、周几、第几周、季度、旬、半月;
l tbStock定义了订单表头,字段分别为订单号、交易位置、交易日期;
l tbStockDetail文件定义了订单明细,该表和tbStock以交易号进行关联,字段分别为订单号、行号、货品、数量、金额:
Time taken: 0.089 seconds, Fetched: 3 row(s)
hive> LOAD DATA LOCAL INPATH '/home/spark/work/saledata/tbDate.txt' INTO TABLE tbDate;
Loading data to table hive.tbdate
hive> LOAD DATA LOCAL INPATH '/home/spark/work/saledata/tbStock.txt' INTO TABLE tbStock;
Loading data to table hive.tbstock
hive> LOAD DATA LOCAL INPATH '/home/spark/work/saledata/tbStockDetail.txt' INTO TABLE tbStockDetail;
Loading data to table hive.tbstockdetail
查看HDFS中相关SALEDATA数据库中增加了三个文件夹,分别对应三个表:
[spark@master ~]$ hadoop fs -ls /user/hive/warehouse/hive.db
drwxr-xr-x - spark supergroup 0 2016-04-14 15:18 /user/hive/warehouse/hive.db/tbdate
drwxr-xr-x - spark supergroup 0 2016-04-14 15:18 /user/hive/warehouse/hive.db/tbstock
drwxr-xr-x - spark supergroup 0 2016-04-14 15:18 /user/hive/warehouse/hive.db/tbstockdetail
C.4.2 计算所有订单每年的总金额
要计算所有订单每年的总金额,首先需要获取所有订单的订单号、订单日期和订单金信息,然后把这些信息和日期表进行关联,获取年份信息,最后根据这四个列按年份归组统计获取所有订单每年的总金额。
C.4.3 计算所有订单每年最大金额订单的销售额
1. 按照日期和订单号进行归组计算,获取所有订单每天的销售数据;
2. 把第一步获取的数据和日期表进行关联获取的年份信息,然后按照年份进行归组,使用Max函数,获取所有订单每年最大金额订单的销售额。
//第一步:按照日期和订单号进行归组计算,获取所有订单每天的销售数据
//第二步: 按照年份进行归组,使用Max函数,获取所有订单每年最大金额订单的销售额
运行过程中创建两个Job,分别为job_1437659442092_0004和job_1437659442092_0005,在YARN的监控界面中可以看到如下界面:
1. 所有订单中季度销售额前10位
//所有订单中季度销售额前10位
hive> select c.theyear,c.thequot,sum(b.amount) as sumofamount from tbStock a,tbStockDetail b,tbDate c where a.ordernumber=b.ordernumber and a.dateid=c.dateid group by c.theyear,c.thequot order by sumofamount desc limit 10;
2008 1 5252819
2007 4 4613093
2007 1 4446088
2006 1 3916638
2008 2 3886470
2007 3 3870558
2007 2 3782235
2006 4 3691314
2005 1 3592007
2005 3 3304243
图 附录C‑11所有订单中季度销售额前10位结果
2. 列出销售金额在100000以上的单据
//列出销售金额在100000以上的单据
hive> select a.ordernumber,sum(b.amount) as sumofamount from tbStock a,tbStockDetail b where a.ordernumber=b.ordernumber group by a.ordernumber having sumofamount>100000;
HMJSL00009024 119058
HMJSL00009958 159126
图 附录C‑12 列出销售金额在100000以上的单据
本文转自shishanyuan博客园博客,原文链接: http://www.cnblogs.com/shishanyuan/p/6195863.html ,如需转载请自行联系原作者
附录C 编译安装Hive相关推荐
- 附录A 编译安装Hadoop
A.1 编译Hadoop A.1.1 搭建环境 第一步安装并设置maven 1. 下载maven安装包 建议安装3.0以上版本(由于Spark2.0编译要求Maven3.3.9及以上版本),本次 ...
- Linux如何编译安装源码包软件
一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...
- sql安装目录下log文件夹_Linux安装Hive数据仓库工具
1.Hive入门教程 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是 ...
- Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.编译Spark Spark可以通过SBT和Maven两种方式进行编译,再通过make-d ...
- WdOS源码编译安装MySQL 5.5.25a
2019独角兽企业重金招聘Python工程师标准>>> MySQL是一个中.小型关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数 ...
- ambari 2.5.0源码编译安装
参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html Ambari 是什么 Ambar ...
- Hadoop学习笔记(一)——编译安装和配置
近期工作调动.打算补一下大数据处理的知识.可能会陆续涉及hadoop.mongodb.ddbs等. 首先Apache提供二进制的Hadoop版本号是32位的.在启动时总是有警告,所以想自己编译一遍.部 ...
- mysql aced是什么_memcached编译安装及缓存mysql测试
说明: 客户端第一次访问应用程序时,会到数据库(RDBMS类型)中取出数据,返回给客户端:同时也将取出的数据保存到memcached中. 第二次访问时,因为数据已经缓存,不用去数据库查询,直接从mem ...
- 数据库入门理论知识介绍以及编译安装MySql
数据库入门理论知识介绍以及编译安装MySql 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1&g ...
最新文章
- NLP汉语自然语言处理入门基础知识介绍
- 程序员必练六大项目:从数据结构到操作系统,计算机教授为你画重点
- 那些不被关注但很重要的html标签
- python评分卡建模-实现WOE编码及IV值计算
- 如何提高linux的时钟精度,Linux时钟精度提高有什么办法?
- php之微型博客创建,php之微型博客的创建
- python调用edge_Abaqus中Python通过findAt方法建立region区域
- VSCode 1.35 发布,新的图标,支持远程开发
- Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...
- 计算机流水线作业员做什么,电子厂普通作业员的工作流程是什么
- 2020牛客多校训练3 G Operating on a Graph(并查集+链式结构)
- 博图v15编程手册_好消息!全套西门子plc编程软件,案例和说明书下载
- 如何用vrml技术实现虚拟计算机组装实验,虚拟现实技术在计算机组装教学中的应用研究...
- 走进全球互联网中枢,顶级域名服务器的分布
- 2022·创新峰会回顾 | 擎创科技荣获CCID双料优秀成果奖
- python处理excel的时间格式_Python处理Excel使用pandas处理时间格式数据
- Linux 安装Oracle10g
- 带疑问的歌词有哪些_抖音你在怀疑你在叹息什么歌 《万拒》歌词完整版介绍...
- 数学建模从入门到放弃
- Laya引擎生产力工具LayaTree