数据分析-Hive学习 Day1

Hive使用

简单使用

  • 启动hive,在hive安装目录中bin文件夹直接执行hive命令。
bin/hive
  • 之后,配置的数据库中会生成一个库。

  • 新建一个hive的数据库
hive> create database test_hive;
  • 新建一个表,这个表是可以直接用文件导入的。见下文。
create table players(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  • 在hive的data文件夹新建一个文件players。
1	james
2	zion
3	davis
4	george
  • 然后将文件导入players表中。
load data local inpath '/home/bizzbee/work/app/hive-1.1.0-cdh5.15.1/data/players' overwrite into table players;
  • 如果执行统计的话,会自动生成MapReduce作业。
hive> select count(1) from players;
Query ID = bizzbee_20191105232020_fa9a96e2-3a68-4671-a4a5-df1e88145c50
Total 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 mapreduce.job.reduces=<number>
Starting Job = job_1572942693118_0001, Tracking URL = http://bizzbee:8088/proxy/application_1572942693118_0001/
Kill Command = /home/bizzbee/work/app/hadoop-2.6.0-cdh5.15.1/bin/hadoop job  -kill job_1572942693118_0001
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2019-11-05 23:21:13,111 Stage-1 map = 0%,  reduce = 0%
2019-11-05 23:21:25,470 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 5.96 sec
2019-11-05 23:21:35,551 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 11.61 sec
MapReduce Total cumulative CPU time: 11 seconds 610 msec
Ended Job = job_1572942693118_0001
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 11.61 sec   HDFS Read: 7283 HDFS Write: 2 SUCCESS
Total MapReduce CPU Time Spent: 11 seconds 610 msec
OK
4
Time taken: 50.814 seconds, Fetched: 1 row(s)

Hive介绍和环境搭建

一、简介

Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。
Hive的表对应HDFS的目录(或文件夹);Hive表中的数据对应HDFS的文件
特点

  1. 简单、容易上手 (提供了类似 sql 的查询语言 hql),使得精通 sql 但是不了解 Java 编程的人也能很好地进行大数据分析;
  2. 灵活性高,可以自定义用户函数 (UDF) 和存储格式;
  3. 为超大的数据集设计的计算和存储能力,集群扩展容易;
  4. 统一的元数据管理,可与 presto/impala/sparksql 等共享数据;
  5. 执行延迟高,不适合做数据的实时处理,但适合做海量数据的离线处理。]

二、Hive的体系架构

2.1 command-line shell & thrift/jdbc

可以用 command-line shell 和 thrift/jdbc 两种方式来操作数据:

  • command-line shell:通过 hive 命令行的的方式来操作数据;
  • thrift/jdbc:通过 thrift 协议按照标准的 JDBC 的方式操作数据。

2.2 Metastore

在 Hive 中,表名、表结构、字段名、字段类型、表的分隔符等统一被称为元数据。所有的元数据默认存储在 Hive 内置的 derby 数据库中,但由于 derby 只能有一个实例,也就是说不能有多个命令行客户端同时访问,所以在实际生产环境中,通常使用 MySQL 代替 derby。

Hive 进行的是统一的元数据管理,就是说你在 Hive 上创建了一张表,然后在 presto/impala/sparksql 中都是可以直接使用的,它们会从 Metastore 中获取统一的元数据信息,同样的你在 presto/impala/sparksql 中创建一张表,在 Hive 中也可以直接使用。

2.3 HQL的执行流程

Hive 在执行一条 HQL 的时候,会经过以下步骤:

  1. 语法解析:Antlr 定义 SQL 的语法规则,完成 SQL 词法,语法解析,将 SQL 转化为抽象 语法树 AST Tree;
  2. 语义解析:遍历 AST Tree,抽象出查询的基本组成单元 QueryBlock;
  3. 生成逻辑执行计划:遍历 QueryBlock,翻译为执行操作树 OperatorTree;
  4. 优化逻辑执行计划:逻辑层优化器进行 OperatorTree 变换,合并不必要的 ReduceSinkOperator,减少 shuffle 数据量;
  5. 生成物理执行计划:遍历 OperatorTree,翻译为 MapReduce 任务;
  6. 优化物理执行计划:物理层优化器进行 MapReduce 任务的变换,生成最终的执行计划。

三、部署架构

四、下载

cdh下载地址
wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.15.1.tar.gz

  • 解压到~/app/

五、修改配置

1. hive-env.sh

进入安装目录下的 conf/ 目录,拷贝 Hive 的环境配置模板 flume-env.sh.template

cp hive-env.sh.template hive-env.sh

修改 hive-env.sh,指定 Hadoop 的安装路径:

HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2

2. hive-site.xml

新建 hive-site.xml 文件,内容如下,主要是配置存放元数据的 MySQL 的地址、驱动、用户名和密码等信息:

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<connfiguration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://bizzbee:3306/hadoop_hive?createDatabaseIfNotExist=true</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>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>
  • 拷贝数据库驱动

将 MySQL 驱动包拷贝到 Hive 安装目录的 lib 目录下, MySQL 驱动的下载地址为:MySQL :: Download Connector/J , 在本仓库的resources 目录下我也上传了一份,有需要的可以自行下载。

  • 然后就自己安装一个mysql
  • 具体参考我的mysql56安装笔记
  • 启动hive ---启动之前要确定hdfs和yarn的状态,以及是否成功安装mysql。
[bizzbee@bizzbee hive-1.1.0-cdh5.15.1]$ bin/hive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值