hive的安装配置及使用

news/2024/5/17 10:51:59/文章来源:https://blog.csdn.net/for_syq/article/details/127882745

hive需要MySQL和hadoop的支持

文章目录

  • hive需要MySQL和hadoop的支持
    • 安装完毕MySQL之后下载并解压hive
    • 添加系统环境变量
    • 配置hive
    • 修改 vim hive-env.sh
    • 修改hive-site.xml(1、简化配置(推荐))
    • 修改hive-site.xml(2、在简化的基础上添加了部分配置)
    • 下载一个mysql的连接包,然后移动到`hive/lib/`中(编写java连接mysql的那个jar包)
    • hive第一次启动需要进入hive下初始化(hive/bin)
    • 由于我的初始化过,所以这次初始化失败了,(初始化只能在第一次使用前,并且只需要执行一次)
    • 启动mysql,hadoop集群,然后直接输入hive,就可以启动hive了
  • 实验3
    • 数据集:
    • (1)创建一个内部表stocks,字段分隔符为英文逗号,表结构如表A-6所示。
    • (2)创建一个外部分区表dividends(分区字段为exchange和symbol),字段分隔符为英文逗号,表结构如表A-7所示。
    • (3)从stocks.csv文件向stocks表中导入数据。
    • (4) 创建一个未分区的外部表dividends_unpartitioned,并从dividends.csv向其中导入数据,表结构如表A-8所示。
    • (5)通过对dividends_unpartitioned的查询语句,利用Hive自动分区特性向分区表dividends各个分区中插入对应数据。
    • (6)查询IBM公司(symbol=IBM)从2000年起所有支付股息的交易日(dividends表中有对应记录)的收盘价(price_close)。
    • (7)查询苹果公司(symbol=AAPL)2008年10月每个交易日的涨跌情况,涨显示rise,跌显示fall,不变显示unchange。
    • (8)查询stocks表中收盘价(price_close)比开盘价(price_open)高得最多的那条记录的交易所(exchange)、股票代码(symbol)、日期(ymd)、收盘价、开盘价及二者差价。
    • (9)从stocks表中查询苹果公司(symbol=AAPL)年平均调整后收盘价(price_adj_close) 大于50美元的年份及年平均调整后收盘价。
    • (10)查询每年年平均调整后收盘价(price_adj_close)前三名的公司的股票代码及年平均调整后收盘价。

MySQL的安装请参考: llinux系统下面安装mysql 5.7.27 (1分钟可安装完毕)
安装完毕mysql了可以将mysql设置为开机自启,不然每次启动hive前都得启动mysql,(先启动mysql,然后hadoop,最后才是hive)
mysql开机自启: systemctl enable mysqld

安装完毕MySQL之后下载并解压hive

tar -zxvf apache-hive-2.3.6-bin.tar.gz
mv apache-hive-2.3.6-bin hive
cd hive/conf

添加系统环境变量

#hive
export HIVE_HOME=/usr/hive
#Hive配置文件路径
export HIVE_CONF_DIR=/usr/hive/conf
export PATH=$PATH:$HIVE_HOME/bin

在这里插入图片描述

配置hive

cp hive-env.sh.template hive-env.sh 
cp hive-default.xml.template hive-site.xml 
cp hive-log4j2.properties.template hive-log4j2.properties 
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

修改 vim hive-env.sh

#Java路径
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
#Hadoop安装路径
export HADOOP_HOME=/usr/hadoop/hadoop-2.9.2
#Hive安装路径
export HIVE_HOME=/usr/hive
#Hive配置文件路径
export HIVE_CONF_DIR=/usr/hive/conf
# hive存放外部jar包的位置
export HIVE_AUX_JARS_PATH=/usr/hive/bin

修改hive-site.xml(1、简化配置(推荐))

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
//所连接的MySQL数据库实例 hive这个数据库将会在初始化hive的时候创建,当然也可以改为其他名称
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property><property>
<name>javax.jdo.option.ConnectionDriverName</name>
//连接的MySQL数据库驱动 
<value>com.mysql.jdbc.Driver</value>
</property><property>
<name>javax.jdo.option.ConnectionUserName</name>
//连接的MySQL数据库用户名 
<value>root</value>
</property>
<property><name>javax.jdo.option.ConnectionPassword</name>
//连接的MySQL数据库密码 
<value>root</value>
</property>
</configuration>

修改hive-site.xml(2、在简化的基础上添加了部分配置)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration><!-- Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI -->
<property><name>hive.exec.scratchdir</name><value>/tmp</value>
</property>
<property><name>hive.exec.local.scratchdir</name><!-- Relative path in absolute URI: ${system:user.name%7D --><!--  去掉system: --><value>/usr/hive/tmp/${user.name}</value><description>Local scratch space for Hive jobs</description></property>
<property><name>hive.downloaded.resources.dir</name><value>/usr/hive/tmp/${hive.session.id}_resources</value><description>Temporary local directory for added resources in the remote file system.</description></property><property><name>hive.metastore.warehouse.dir</name><value>/usr/hive/warehouse</value>
</property>
<property><name>hive.querylog.location</name><value>/usr/hive/logs/${user.name}</value>
</property><property><name>hive.server2.logging.operation.log.location</name><!-- Relative path in absolute URI: ${system:user.name%7D --><!--  去掉system: --><value>/usr/hive/logs/${user.name}/operation_logs</value><description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property><!-- 配置 MySQL 数据库连接信息 -->
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><!-- 指定mysql用户名 --></property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value><!-- 指定mysql密码 --></property>
</configuration>

下载一个mysql的连接包,然后移动到hive/lib/中(编写java连接mysql的那个jar包)

在这里插入图片描述

hive第一次启动需要进入hive下初始化(hive/bin)

schematool -dbType derby -initSchema

在这里插入图片描述

由于我的初始化过,所以这次初始化失败了,(初始化只能在第一次使用前,并且只需要执行一次)

启动mysql,hadoop集群,然后直接输入hive,就可以启动hive了

在这里插入图片描述

实验3

数据集:

数据获取地址:https://www.cocobolo.top/FileServer/prog-hive-1st-ed-data.zip
解压后可以得到本实验所需的stocks.csv和dividends.csv两个文件。
在这里插入图片描述
在这里插入图片描述

(1)创建一个内部表stocks,字段分隔符为英文逗号,表结构如表A-6所示。

在这里插入图片描述
创建表的语句如下:

create table if not exists stocks
(
`exchange` string,
`symbol` string,
`ymd` string,
`price_open` float,
`price_high` float,
`price_low` float,
`price_close` float,
`volume` int,
`price_adj_close` float
)
row format delimited fields terminated by ',';

在这里插入图片描述

(2)创建一个外部分区表dividends(分区字段为exchange和symbol),字段分隔符为英文逗号,表结构如表A-7所示。

在这里插入图片描述

create external table if not exists dividends
(
`ymd` string,
`dividend` float
)
partitioned by(`exchange` string ,`symbol` string)
row format delimited fields terminated by ',';

在这里插入图片描述

(3)从stocks.csv文件向stocks表中导入数据。

操作语句如下:

load data local inpath '/usr/data/stocks/stocks.csv' overwrite into table stocks;

在这里插入图片描述

(4) 创建一个未分区的外部表dividends_unpartitioned,并从dividends.csv向其中导入数据,表结构如表A-8所示。

在这里插入图片描述

create external table if not exists dividends_unpartitioned
(
`exchange` string ,
`symbol` string,
`ymd` string,
`dividend` float
)
row format delimited fields terminated by ',';

在这里插入图片描述

导入数据

load data local inpath '/usr/data/dividends/dividends.csv' overwrite into table dividends_unpartitioned;

在这里插入图片描述

(5)通过对dividends_unpartitioned的查询语句,利用Hive自动分区特性向分区表dividends各个分区中插入对应数据。

操作语句如下:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
insert overwrite table dividends partition(`exchange`,`symbol`) select `ymd`,`dividend`,`exchange`,`symbol` from dividends_unpartitioned;

在这里插入图片描述

(6)查询IBM公司(symbol=IBM)从2000年起所有支付股息的交易日(dividends表中有对应记录)的收盘价(price_close)。

select s.ymd,s.symbol,s.price_close
from stocks s 
LEFT SEMI JOIN 
dividends d
ON s.ymd=d.ymd and s.symbol=d.symbol
where s.symbol='IBM' and year(ymd)>=2000;

在这里插入图片描述

(7)查询苹果公司(symbol=AAPL)2008年10月每个交易日的涨跌情况,涨显示rise,跌显示fall,不变显示unchange。

select ymd,
casewhen price_close-price_open>0 then 'rise'when price_close-price_open<0 then 'fall'else 'unchanged'
end as situation
from stocks
where symbol='AAPL' and substring(ymd,0,7)='2008-10';

在这里插入图片描述

(8)查询stocks表中收盘价(price_close)比开盘价(price_open)高得最多的那条记录的交易所(exchange)、股票代码(symbol)、日期(ymd)、收盘价、开盘价及二者差价。

select `exchange`,symbol,ymd,price_close-price_open as `diff`
from
(select *from stocksorder by price_close-price_open desclimit 1
)t;

在这里插入图片描述

(9)从stocks表中查询苹果公司(symbol=AAPL)年平均调整后收盘价(price_adj_close) 大于50美元的年份及年平均调整后收盘价。

selectyear(ymd) as `year`,avg(price_adj_close) as avg_price from stocks
where `exchange`='NASDAQ' and symbol='AAPL'
group by year(ymd)
having avg_price > 50;

在这里插入图片描述

(10)查询每年年平均调整后收盘价(price_adj_close)前三名的公司的股票代码及年平均调整后收盘价。

select t2.`year`,symbol,t2.avg_price
from
(select*,row_number() over(partition by t1.`year` order by t1.avg_price desc) as `rank`from(selectyear(ymd) as `year`,symbol,avg(price_adj_close) as avg_pricefrom stocksgroup by year(ymd),symbol)t1
)t2
where t2.`rank`<=3;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_36464.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

liunx中如何启动redis

连上服务器之后&#xff0c;这个“~”’波浪符号应该是在root目录下&#xff0c;我们需要到这个目录的外面&#xff0c;根目录 root目录 目录的外面&#xff0c;根目录 cd .. 变为"/"符号即可 然后再找到redis的安装目录&#xff0c;也可以在xftp中找&#xff0c;可视…

WPF项目实战布局--通用固件下载 C#

每个作品都是产品 C# WPF版效果&#xff1a; C# winForm版效果: 一.布局设计UI 1.主体&#xff1a;grid 2行 2列 00 下载按钮 20% 01进度条 80% &#xff08;同时显示百分比&#xff09; 10 11都是跨列 显示日志 2.细节&#xff1a;百分比与进度条Value绑定。下载按钮…

ms10-046漏洞利用+bypassuac提权

目录 前期准备 漏洞利用 上传文件到目标主机 UAC介绍 使用bypassuac模块绕过uac进行提权。 关于钓鱼链接的拓展 前期准备 Win xp sp3关闭防火墙 实验前提 保证连通性&#xff0c;进行互ping 漏洞利用 进入msf查看需要利用的漏洞&#xff1a;ms10-046 search ms10-046 …

Metabase学习教程:视图-4

将数据可视化为直方图 学习何时使用直方图&#xff0c;以及元数据库如何使创建直方图更容易。 我们将逐步创建直方图&#xff0c;它是一种条形图&#xff0c;显示连续范围内的数据组。柱状图有助于深入了解人们可能购买的商品的数量、他们可能购买的价格范围&#xff0c;甚至…

Flutter高仿微信-第37篇-单聊-红包

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取红包功能的…

极光笔记 | 用 WhatsApp 进行海外用户运营的 N 个理由

在出海热潮下&#xff0c;各大企业纷纷将国内业务拓展到海外。而在各大企业出海时不可避免地会面临与国内完全不同的数据合规、网络环境、软件生态等问题。在这种情况下&#xff0c;企业如何针对海外用户实现本土化、精细化和稳定高效的消息触达&#xff0c;如何和用户保持紧密…

Linux零基础从入门到精通,必学的55个指令合集【上篇】

Linux学习笔记 资料下载&#xff1a; 链接: https://pan.baidu.com/s/1UvwkJaEJO7W3sU5qkCgKzA?pwdfe2f提取码: fe2f 本篇文章主要适用0基础的读者&#xff0c;内容会比较通俗易懂&#xff0c;也会有详细的图解教程&#xff0c;以及运行后的返回结果。我本人在系统性的学习…

2023-2028年中国化工新材料行业发展前景与投资趋势分析报告

本报告由锐观咨询重磅推出&#xff0c;对中国化工新材料行业的发展现状、竞争格局及市场供需形势进行了具体分析&#xff0c;并从行业的政策环境、经济环境、社会环境及技术环境等方面分析行业面临的机遇及挑战。还重点分析了重点企业的经营现状及发展格局&#xff0c;并对未来…

【学习笔记20】JavaScript数据类型之间的区别

一、数据类型 基本数据类型复杂数据类型 (function; object; array)二、存储的区别 基本数据类型: 存储在栈内存中, 变量内部就是实际的值引用数据类型: 变量存储在栈内存中, 变量内部存储的是指向堆内存的地址(对象实际的值, 存储在堆内存中)三、赋值的区别 1. 基本数据类型: …

零基础上手unity VR开发【将项目安装到Oculus头套中】

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;Unity VR 开发成神之路 --【着重解决VR项目开发难&#xff0c;国内资料匮乏的问题。从零入门&#xff0c;一步一个脚印&#xff0c;带你搞定VR开发! &#x1f63b;&#x1f63b;】 &#x1f4d…

交互与前端16 Tabulator 表格实践4

说明 继续给表格来加一些小功能。 内容 1 分页 在表格初始化的地方加两行配置,表格就实现了分页 pagination:true, //enable.paginationSize:20, // this option can take any positive integer value2 超链接 这个需求的来源是,一些微服务需要注释,所以我写了很多文档…

ShareSDK for Flutter

前言 这是一个基于ShareSDK功能的扩展的Flutter插件。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现社会化功能,例如第三方授权登录,获取用户信息以及社交平台的分享等功能。 Demo例子&#xff1a;https://github.com/MobClub/ShareSDK-For-Flutter 开始集成 引入…

m基于QPSK调制解调的无线图像传输matlab仿真,包括扩频解扩均衡等模块

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 软件无线电在无线通信领域被称为是自模拟通信过渡到数字通信之后的又一次革命&#xff0c;在军用和民用方面都有着广阔的应用。它是一种新的无线通信技术&#xff0c;基于通用的可编程的…

c++ 旅行商问题(动态规划)

目录一、旅行商问题简介旅行商问题问题概述问题由来二、基本思路三、实现1、状态压缩2、状态转移四、代码复杂度分析一、旅行商问题简介 旅行商问题 TSP&#xff0c;即旅行商问题&#xff0c;又称TSP问题&#xff08;Traveling Salesman Problem&#xff09;&#xff0c;是数学…

vxe-table 表格尾部小计列项再合计展示

公式&#xff1a;店员奖金item1item3item5item7 this.dyjj全局变量 this.tableDat 全局数组 1.求出尾部小计这一行的数据 columns.map((column, columnIndex) > { var aa XEUtils.sum(data, column.property) this.tableDat.push(aa) if (columnIndex 0) { return ‘小计…

Sentinel流控规则

Sentinel流控规则 1、基本介绍 资源名&#xff1a;唯一名称&#xff0c;默认请求路径(如&#xff1a;http://localhost:8089/testA) 针对来源&#xff1a;Sentinel可以针对调用者进行限流&#xff0c;填写微服务名&#xff0c;指定对哪个微服务进行限流 &#xff0c;默认defa…

[附源码]java毕业设计疫情背景下叮当买菜管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ARM-A架构入门基础(一)预备知识

14天学习训练营导师课程&#xff1a;周贺贺《ARMv8/ARMv9架构-快速入门》 1. 背景 ARM全称&#xff1a; Advanced RISC Machines。 ARM处理器&#xff1a; 基于ARM公司设计的架构而研发的处理器&#xff0c;包含arm core和外设。ARM公司本身不生产处理器&#xff0c;只出售技…

前端开发——HTML5新增的客户端校验

1.使用校验属性执行校验 HTML5新增了表单的校验属性,如required、pattern等。 required:定义表单不能为空。属性值是required或者省略.pattern:定义表单满足正则表单式1.required属性 required属性用于不能为空。属性值是required或者省略. 代码如下&#xff1a; <form …

HDI激光钻孔和常见问题

随着电子产品不断升级&#xff0c;对pcb工艺也会越来越高。且由于结构空间原因&#xff0c;对pcb的体积也会越来越小。因此pcb的工艺会越来越复杂。 一&#xff0c;什么样的孔才会用激光设备&#xff1f; 很多工程师看到工艺能力的时候&#xff0c;上面写的最小孔0.1mm&#x…