Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apache Hive 快速入门

Apache Hive 快速入门

作者头像
netkiller old
发布于 2018-03-05 10:39:26
发布于 2018-03-05 10:39:26
1.1K00
代码可运行
举报
文章被收录于专栏:NetkillerNetkiller
运行总次数:0
代码可运行

本文节选自《Netkiller Database 手札》

CentOS 7.3 + Server JRE 1.8 + Hadoop-2.8.0 + Hive-2.1.1

第 63 章 Apache Hive

目录

  • 63.1. 安装 Apache Hive
    • 63.1.1. MySQL
    • 63.1.2. Hadoop
    • 63.1.3. Hive
    • 63.1.4. 启动 Hive
    • 63.1.5. 访问 Hive
  • 63.2. 管理 Hive
    • 63.2.5.1. HDFS 目录迁移
    • 63.2.5.2. 导出表数据到本地文件
    • 63.2.5.3.
    • 63.2.4.1. 从文本文件导入数据
    • 63.2.4.2. 从其他表查询数据并创建新表
    • 63.2.4.3. 从其他表查询数据然后插入指定表中
    • 63.2.4.4.
    • 63.2.3.1. 创建视图
    • 63.2.3.2. 删除视图
    • 63.2.2.1. 创建分区表
    • 63.2.2.2. 显示分区情况
    • 63.2.2.3. 增加分区
    • 63.2.2.4. 向分区表导入数据
    • 63.2.1.1. 创建表
    • 63.2.1.2. 显示表
    • 63.2.1.3. 删除表
    • 63.2.1.4. 查看表结构
    • 63.2.1.5. 为表增加字段
    • 63.2.1.6. 修改表名称
    • 63.2.1.7. 使用已有表结构创建新表
    • 63.2.1. 表管理
    • 63.2.2. 分区表
    • 63.2.3. 视图管理
    • 63.2.4. 数据管理
    • 63.2.5. HDFS与本地文件系统管理
  • 63.3. HiveQL - Hive查询语言
    • 63.3.1. JOIN 连接查询
    • 63.3.2. 子查询

Hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据。其在Hadoop的架构体系中承担了一个SQL解析的过程,它提供了对外的入口来获取用户的指令然后对指令进行分析,解析出一个MapReduce程序组成可执行计划,并按照该计划生成对应的MapReduce任务提交给Hadoop集群处理,获取最终的结果。

63.1. 安装 Apache Hive

安装 Apache Hive 需要 Hadoop和MySQL,这里假设你已经懂得如何安装Hadoop和MySQL,所以一下将采用Netkiller OSCM一件安装脚本来初始化Hadoop和MySQL,如果需要详细的安装步骤请参考笔者的相关文章。

63.1.1. MySQL

默认情况下, Hive 使用内嵌的 Derby 数据库保存元数据, 通常生产环境会使用 MySQL 来存放 Hive 元数据。

使用下面脚本一键安装MySQL 5.7 安装后会显示mysql的初始密码,是所有初始密码登陆后修改为你的需要密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			curl -s https://raw.githubusercontent.com/oscm/shell/master/database/mysql/5.7/mysql.server.sh | bash

2016-02-16T08:22:58.253030Z 1 [Note] A temporary password is generated for root@localhost: sd%%my.Ak7Ma			

安装 MySQL JDBC 连接库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			curl -s https://raw.githubusercontent.com/oscm/shell/master/database/mysql/5.7/mysql-connector-java.sh | bash			

创建一个 hive 数据库用来存储 Hive 元数据,且数据库访问的用户名和密码都为 hive。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			mysql> CREATE DATABASE hive; 
Query OK, 1 row affected (0.03 sec)			

创建用户hive并授权访问hive数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye			

63.1.2. Hadoop

安装 Hadoop 采用单机模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			curl -s https://raw.githubusercontent.com/oscm/shell/master/distributed/hadoop/hadoop-2.8.0.sh | bash
curl -s https://raw.githubusercontent.com/oscm/shell/master/distributed/hadoop/single.sh | bash
curl -s https://raw.githubusercontent.com/oscm/shell/master/distributed/hadoop/startup.sh | bash 

63.1.3. Hive

可以从 Apache 镜像站点中下载最新稳定版的 apache-hive-2.1.1-bin.tar.gz

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			cd /usr/local/src
wget http://mirrors.hust.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz

tar zxf apache-hive-2.1.1-bin.tar.gz
mv apache-hive-2.1.1-bin /srv/apache-hive-2.1.1
ln -s /srv/apache-hive-2.1.1/ /srv/apache-hive
chown hadoop:hadoop -R /srv/apache-hive-2.1.1			
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			cat > /srv/apache-hive/conf/hive-env.sh <<'EOF'
export JAVA_HOME=/srv/java
export HADOOP_HOME=/srv/apache-hadoop
export HBASE_HOME=/srv/apache-hbase
export HIVE_HOME=/srv/apache-hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
EOF

cat >> ~/.bash_profile <<'EOF'
export JAVA_HOME=/srv/java
export HADOOP_HOME=/srv/apache-hadoop
export HBASE_HOME=/srv/apache-hbase
export HIVE_HOME=/srv/apache-hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
EOF

source ~/.bash_profile			

安装JDBC驱动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			[root@localhost apache-hive]# ln -s  /usr/share/java/mysql-connector-java.jar /srv/apache-hive/lib/
[root@localhost apache-hive]# ll /srv/apache-hive/lib/mysql-connector-java.jar 
lrwxrwxrwx 1 root root 40 Jun 29 01:59 /srv/apache-hive/lib/mysql-connector-java.jar -> /usr/share/java/mysql-connector-java.jar			

修改 hive-site.xml 配置文件,配置工作目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <property>
    <name>hive.querylog.location</name>
    <value>/tmp/live/hadoop</value>
    <description>Location of Hive run time structured log file</description>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/hive</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/${hive.session.id}_resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

  <property>
    <name>hive.querylog.location</name>
    <value>/user/hive/log</value>
    <description>Location of Hive run time structured log file</description>
  </property>			

把默认的 Derby 修改为 MySQL 需要在该文件中配置 MySQL 数据库连接信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>APP</value>
    <description>Username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>mine</value>
    <description>password to use against metastore database</description>
  </property>			

将上面配置项 value 改为下面的配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <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>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
  </property>			

63.1.4. 启动 Hive

启动 Hive 前你必须做两件事,一是创建HDFS目录,二是初始化 MySQL 数据库。

为 Hive 创建 HDFS 工作目录并给它们赋相应的权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			[root@localhost ~]$ su - hadoop
[hadoop@localhost ~]$ /srv/apache-hadoop/bin/hdfs dfs -mkdir -p /user/hive/warehouse
[hadoop@localhost ~]$ /srv/apache-hadoop/bin/hdfs dfs -mkdir -p /tmp/hive
[hadoop@localhost ~]$ /srv/apache-hadoop/bin/hdfs dfs -chmod g+w /user/hive/warehouse
[hadoop@localhost ~]$ /srv/apache-hadoop/bin/hdfs dfs -chmod 777 /tmp/hive			

初始化 MySQL 数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			[hadoop@localhost ~]$ /srv/apache-hive/bin/schematool -dbType mysql -initSchema
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/srv/apache-hive-2.1.1/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/srv/apache-hadoop-2.8.0/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false
Metastore Connection Driver :	 com.mysql.jdbc.Driver
Metastore connection User:	 hive
Starting metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.mysql.sql
Initialization script completed
schemaTool completed			

63.1.5. 访问 Hive

启动 Hadoop

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			[hadoop@localhost ~]$ /srv/apache-hadoop/sbin/start-all.sh 
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [localhost]
localhost: starting namenode, logging to /srv/apache-hadoop-2.8.0/logs/hadoop-hadoop-namenode-localhost.localdomain.out
localhost: starting datanode, logging to /srv/apache-hadoop-2.8.0/logs/hadoop-hadoop-datanode-localhost.localdomain.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /srv/apache-hadoop-2.8.0/logs/hadoop-hadoop-secondarynamenode-localhost.localdomain.out
starting yarn daemons
starting resourcemanager, logging to /srv/apache-hadoop-2.8.0/logs/yarn-hadoop-resourcemanager-localhost.localdomain.out
localhost: starting nodemanager, logging to /srv/apache-hadoop-2.8.0/logs/yarn-hadoop-nodemanager-localhost.localdomain.out			

进入 Hive 然后输入 show databases; 测试安装是否正常。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
			[hadoop@localhost conf]$ /srv/apache-hive/bin/hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/srv/apache-hive-2.1.1/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/srv/apache-hadoop-2.8.0/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in file:/srv/apache-hive-2.1.1/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> show databases;
OK
default
Time taken: 0.264 seconds, Fetched: 1 row(s)
hive>			

至此 Apache Hive 已经安装配置完成!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netkiller 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hive实现自增序列及元数据问题
在利用数据仓库进行数据处理时,通常有这样一个业务场景,为一个Hive表新增一列自增字段(比如事实表和维度表之间的"代理主键")。虽然Hive不像RDBMS如mysql一样本身提供自增主键的功能,但它本身可以通过函数来实现自增序列功能:利用row_number()窗口函数或者使用UDFRowSequence。
大数据学习与分享
2020/08/10
1.5K0
我的 Hive 3.1.2 之旅 【收藏夹吃灰系列】
同样,这部也属于收藏夹吃灰系列。看在写了辣么多字儿,险些把PP坐出ZC的份儿上,各位看官来个三连呗!
Lenis
2021/04/19
2.1K0
我的 Hive 3.1.2 之旅 【收藏夹吃灰系列】
Hive的安装及配置
在安装hive之前,需要安装hadoop集群环境,如果没有可以查看:Hadoop分布式集群的搭建
foochane
2019/06/11
2.2K0
基于docker快速搭建hive环境
Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。
py3study
2020/07/27
4.5K0
基于docker快速搭建hive环境
Windows环境下安装Hadoop+Hive的使用案例
首先到官方下载官网的hadoop2.7.7,链接如下  https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 找网盘的hadooponwindows-master.zip  链接如下  https://pan.baidu.com/s/1VdG6PBnYKM91ia0hlhIeHg 把hadoop-2.7.7.tar.gz解压后  使用hadooponwindows-master的bin和etc替换hadoop2.7.7的bin和etc 
小勇DW3
2019/05/15
4.6K0
Windows环境下安装Hadoop+Hive的使用案例
Hive安装配置详解
Hive安装配置详解 1. 安装MySQL  sudo apt-get install mysql-server mysql-client  1). 建立数据库hive, create database hive;   2). 创建用户hive create user 'hive'@'%' identified by 'hive';  3).创建hive用户,并授权 grant all on hive.* to hive@'%'  identified by 'hive';   flush privileg
汤高
2018/01/11
1.9K0
Hadoop+Hive+HBase+Spark 集群部署(四)
本文由 bytebye 创作 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
ByteBye
2019/09/24
6150
用ranger对hive metastore 进行授权管理
hive standalone metastore 3.1.2可作为独立服务,作为spark、flink、presto等服务的元数据管理中心,然而在现有的hive授权方案中只有针对hiveserver2的授权,所以本文针对hive standalone metastore独立服务使用ranger对连接到hive metastore的用户进行授权访问,以解决hive standalone metastore无权限验证问题。
从大数据到人工智能
2022/01/15
1.9K0
用ranger对hive metastore 进行授权管理
基于Ubuntu Hadoop的群集搭建Hive
Hive是Hadoop生态中的一个重要组成部分,主要用于数据仓库。前面的文章中我们已经搭建好了Hadoop的群集,下面我们在这个群集上再搭建Hive的群集。
深蓝studyzy
2022/06/16
6460
搭建Hadoop集群(二)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
用户9615083
2022/12/25
5860
搭建Hadoop集群(二)
hive安装配置(0.11版本)
1 假设Hadoop已经安装并配置正确,MySQL已经正确安装 2 为支持Hive的多用户多会话需求,需要使用一个独立的数据库存储元数据。   这里选择MySQL存储Hive的元数据,现在为Hive创建元数据库: mysql> create database hive; mysql> create user 'hive' identified by '123456'; mysql> grant all privileges on *.* to 'hive'@'%' with grant option; f
闵开慧
2018/03/30
7690
Apache Hive 安装详解及相关问题解决方案
摘 要 本文介绍hive工具的安装及整合mysql 下载Hive 点击hive官方下载 hive目前两个运行版本分为两个分支:1.x 、2.x 1.x主要是运行在MapReduce上面。 2.x主要运行在Spark上面。 安装及配置 上传并解压Hive 将Hive上传到hadoop集群服务器/itunic/目录下,并解压到当前目录。 tar -zxvf apache-hive-1.2.1-bin.tar.gz 2.将hive配置到环境变量 vi /etc/profile #set hive env ex
天策
2018/06/22
6840
Hadoop Hive Hbase Kylin 环境搭建
# hadoop-env.sh 配置 export JAVA_HOME=`absolute path` # core-site.xml 配置 <configuration> <!-- 指定HDFS老大(namenode)的通信地址 --> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/path/to/tmp</value> </property> </configuration> # hdfs-site.xml 配置 <configuration> <!-- 设置hdfs副本数量 --> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
lpe234
2020/07/27
1.1K0
Hive安装步骤及HQL使用学习
Hive是一个使用类SQL管理分布式存储上大规模数据集的数据仓库,它提供了命令行工具和JDBC驱动程序帮助用户使用Hive。
zhangheng
2021/03/21
1.1K0
数据仓库 Hive(内含大数据镜像下载)
安装没成功:直接用现成的镜像 大数据Linux实验环境虚拟机镜像文件 http://dblab.xmu.edu.cn/blog/1645-2/ cloudera-quickstart-vm-集成了大数据平台的虚拟机镜像
Michael阿明
2021/09/06
1.5K0
Apache Hive-2.3.0 快速搭建与使用
Hive 简介 Hive 是一个基于 hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。它把海量数据存储于 hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 Hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,最终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。 Hi
程序员鹏磊
2018/02/09
1.6K0
Apache Hive-2.3.0 快速搭建与使用
Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.2 Hive安装与配置)(草稿)
该文章是一篇介绍Apache Hive的技术文章,主要介绍了Hive的基本概念、架构设计、数据类型、数据存储、SQL语法、数据导入导出、元数据查询、Hive Web UI的使用、Hive CLI、Hive SQL和Hive Shell等方面的内容。此外,文章还介绍了Hive的生态系统,包括Hive的社区、生态系统、Hive的扩展和插件、Hive的数据安全等方面的内容。
程裕强
2018/01/02
1.9K0
Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.2 Hive安装与配置)(草稿)
建立单机版的hive
为了学习hive SQL,我搭建了单机版的hive,查了网上的资料,走了许多坑,总结如下。
顾翔
2024/09/10
2810
建立单机版的hive
配置Hive实验环境(二)本地部署
设置完毕后,ssh localhost 不提示输入密码就表示已经设置好了公钥验证登陆
esse LL
2024/03/08
5470
Hive2:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
2017.3.11 问题找到了,原来 Hive2需要hive元数据库初始化
程裕强
2022/05/06
5630
相关推荐
Hive实现自增序列及元数据问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验