前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive安装步骤及HQL使用学习

Hive安装步骤及HQL使用学习

作者头像
zhangheng
发布2021-03-21 10:17:05
1K0
发布2021-03-21 10:17:05
举报

Hive是一个使用类SQL管理分布式存储上大规模数据集的数据仓库,它提供了命令行工具和JDBC驱动程序帮助用户使用Hive。

hive基于hadoop,它的具体功能如下:

  • 通过SQL轻松访问数据的工具,从而实现数据仓库任务,例如提取/转换/加载(ETL),报告和数据分析。
  • 一种将结构强加于各种数据格式的机制
  • 访问直接存储在Apache HDFS ™ 或其他数据存储系统(例如Apache HBase ™)中的文件
  • 通过Apache Tez ™, Apache Spark ™或 MapReduce执行查询
  • HPL-SQL的过程语言
  • 通过Hive LLAP,Apache YARN和Apache Slider进行亚秒级查询检索。

以上内容来自Apache Hive官网,hive在1.x版本中只支持MapReduce,从2.x开始开始支持其他分布式计算引擎。

接下来,我们来学习如何安装hive和使用它来进行wordcount。

1. Hive安装

这里假设你已经安装好了hadoop,如果还没有安装hadoop,请查看之前的文章,记hadoop伪分布式安装。另外,需要安装mysql/mariadb数据库,用来存储hive的元数据,这里假设数据库在本机,用户名hive,密码root,数据库hive。

1.1 下载解压

清华大学镜像站下载hive压缩包,将其解压到/usr/local文件夹下。

tar -zxf apache-hive-2.3.8-bin.tar.gz
mv hive-2.3.8-bin /usr/local

1.2 环境配置

编辑/etc/profile文件,增加以下内容:

export HIVE_HOME=/usr/local/hive
export PATH=.:$HIVE_HOME/bin::$PATH

编辑后需要重新打开终端才能生效,可以使用命令source /etc/profile 将其生效。

接下来通过查看hive版本确定是否安装成功

hive --version
Hive 2.3.8
Git git://chaos-mbp.lan/Users/chao/git/hive -r f1e87137034e4ecbe39a859d4ef44319800016d7
Compiled by chao on Thu Jan 7 11:36:26 PST 2021
From source with checksum 2992381e2a287352c65262bf40d3f932

这里可能会报出一个NoSuchMethodException,应该是guava包版本过低引起的,此时需要打开maven仓库下,找到最新版本,点击去,里面有一个files,下载最新包到/usr/local/hive/lib中即可。

1.3 修改配置文件

主要是配置数据库连接信息,首先将/usr/local/hive/conf/下的hive-default.xml.template复制为hive-site.xml

接下来在配置文件最上方新增以下配置:

<configuration>
  <!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->
  <!-- WARNING!!! Any changes you make to this file will be ignored by Hive.   -->
  <!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->
  <!-- Hive Execution Parameters -->
<!-- 插入一下代码 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>hive.querylog.location</name>
        <value>/tmp/hive</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.session.id}_resources</value>
        <description>Temporary local directory for added resources in the remote file system.</description>
    </property>
        <!-- 到此结束代码 -->

增加完上述配置后,主要需要查找该配置文件下的同名配置,将其注释。

1.4 初始化

当在配置文件中增加了数据库相关配置,接下来就可以进行初始化操作了。

此时需要将mysql的jdbc驱动程序添加到/usr/local/hive/lib中,打开maven仓库,找到最新的mysql-connector,点进去,里面有一个files,点击下载即可。

接下来进入到目录/usr/local/hive/bin,进行如下操作:

schematool -dbType mysql -initSchema --verbose

正常情况下会连接你的数据库,进行初始化表等操作。

操作完成后,输入hive命令,就会进入到操作界面:

hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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 jar:file:/usr/local/hive/lib/hive-common-2.3.8.jar!/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>

2. Hive使用

当hive安装完成后,我们以wordcount为例,来进行简单的hive使用练习。

2.1 库操作

查看库,默认应该是default

show databases;

创建库

create database hive_test;
use database hive_test;

此时,在hdfs的指定目录中将会有一个hive_test文件夹。

2.2 表操作

查看表:

show tables;

创建表:

create table book(line string);

查看建表语句

show create table book;

从本机导入数据:

load data local inpath '/home/hadoop/to_kill_a_mockingbird.txt' overwrite into table book;

查看表数据:

select count(1) from book;

此时可以看到一共插入表文本行数。

将文本拆分成词,插入到新表中:

create table words as 
select word from (select explode(split(line,' '))as word from book) w ;

这里使用了hive的一个函数explode,它的作用是将一行数据变成一列。

进行wordcount计数:

select word,count(1) as count from (

select trim(regexp_extract(word,"\\W*([a-zA-Z]*)\\W*",1)) as word from words

) word_table where word is not null and word != '' group by word order by count desc limit 100;

2.3 学习小结

在提交sql执行后,我们可以看到hive实际上将sql转变成了mapreduce任务,有时会是多个任务的串联。这就是hive的优势,它将大数据分析工作从编写编排mapreduce代码中解放出来,从而让sqlboy也可以进行数据分析。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Hive安装
    • 1.1 下载解压
      • 1.2 环境配置
        • 1.3 修改配置文件
          • 1.4 初始化
          • 2. Hive使用
            • 2.1 库操作
              • 2.2 表操作
                • 2.3 学习小结
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档