什么是Hive

Hive是基于Hadoop的一个数据仓库工具(E抽取T转换L加载),可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
本质是:将HQL转化成MapReduce程序
Hive是一个翻译工具,将sql翻译为底层mr程序的,它不是数据库,只不过在表现形式上和数据库有很多类似而已(比如表、database、字段等)
1)Hive处理的数据存储在HDFS
2)Hive分析(翻译工作)数据底层的实现是MapReduce

3)执行程序运行在Yarn上
Hadoop = HDFS + MR + YARN;
综上所述,可以认为Hive这个软件工具是Hadoop的一个客户端

Hive的优缺点

优点
)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。
)避免了去写MapReduce,减少开发人员的学习成本。
)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。
)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。Select length() from dual;
)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
缺点
.Hive的HQL表达能力有限
()迭代式算法无法表达
()数据挖掘方面不擅长
.Hive的效率比较低
()Hive自动生成的MapReduce作业,通常情况下不够智能化
()Hive调优比较困难,粒度较粗

hive安装

(1)把apache-hive-1.2.-bin.tar.gz上传到linux的/opt/software目录下
()解压apache-hive-1.2.-bin.tar.gz到/opt/module/目录下面
  [hadoop@hadoop101 software]$ tar -zxvf apache-hive-1.2.-bin.tar.gz -C /opt/module/
()修改apache-hive-1.2.-bin.tar.gz的名称为hive
  [hadoop@hadoop101 module]$ mv apache-hive-1.2.-bin/ hive
()修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh
  [hadoop@hadoop101 conf]$ mv hive-env.sh.template hive-env.sh
()配置hive-env.sh文件
(a)配置HADOOP_HOME路径
    export HADOOP_HOME=/opt/module/hadoop-2.7.
(b)配置HIVE_CONF_DIR路径
    export HIVE_CONF_DIR=/opt/module/hive/conf

MySql安装

使用宝塔直接安装
.进入mysql
[root@hadoop101 mysql-libs]# mysql -uroot -p123
.显示数据库
mysql>show databases;
.使用mysql数据库
mysql>use mysql;
.展示mysql数据库中的所有表
mysql>show tables;
.展示user表的结构
mysql>desc user;
.查询user表
mysql>select user, host, password from user; (大小写均可)
.修改user表,把Host字段内容修改为%
mysql>update user set host='%' where host='localhost';
.删除root用户的其他host
mysql>delete from user where Host='hadoop102';
mysql>delete from user where Host='127.0.0.1';
mysql>delete from user where Host='::1';
.刷新
mysql>flush privileges;

Hive元数据配置到MySql

驱动拷贝
  .在/opt/software/mysql-libs目录下解压mysql-connector-java-5.1..tar.gz驱动包
    [hadoop@hadoop101 mysql-libs]# tar -zxvf mysql-connector-java-5.1..tar.gz
  .拷贝/opt/software/mysql-libs/mysql-connector-java-5.1.27目录下的mysql-connector-java-5.1.-bin.jar到/opt/module/hive/lib/
    [root@hadoop101 mysql-connector-java-5.1.]# cp mysql-connector-java-5.1.-bin.jar
/opt/module/hive/lib/
配置Metastore到MySql
  .在/opt/module/hive/conf目录下创建一个hive-site.xml
    [root@hadoop101 conf]$ touch hive-site.xml
    [root@hadoop101 conf]$ vi hive-site.xml
根据官方文档配置参数,拷贝数据到hive-site.xml文件中
  https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop101:3306/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property> <property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property> <property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
  <property>
  <name>hive.cli.print.header</name>
  <value>true</value>
  </property>   <property>
   <name>hive.cli.print.current.db</name>
   <value>true</value>
  </property>
  <property> <name>javax.jdo.option.ConnectionPassword</name> <value></value> <description>password to use against metastore database</description> </property>
</configuration>
配置完毕后,如果启动hive异常,可以重新启动虚拟机。(重启后,别忘了启动hadoop集群)

注意 :  执行hive命令,启动终端,会报错

如何解决哪?依次执行下面的3条mysql命令:

drop database metastore;

create database metastore;

alter database metastore character set latin1;

hive操作

数据库相关

  create database db_hive;
create database if not exists db_hive;
create database db_hive2 location '/db_hive2.db';
show databases;
show databases like 'db_hive*';
desc database db_hive;
drop database db_hive2;

表相关

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
LIKE tablename 例如
create external table if not exists t3 (id int comment "id",name string comment "string")
comment "studnet" ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t" STORED AS TEXTFILE location "/user/t3" ; 解释
(1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。

(2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive创建内部表时,会将数据移动到数据仓库指向的路径;
   若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。 (3)COMMENT:为表和列添加注释。 (4)ROW FORMAT DELIMITED FIELDS TERMINATED BY char (5)STORED AS指定存储文件类型 常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件) 如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。 (6)LOCATION :指定表在HDFS上的存储位置。 (7)LIKE允许用户复制现有的表结构,但是不复制数据。 如果当前创建的表create table table1,希望table1和已经存在的table0的表结构相同,就可以使用like指令直接创建,create table table1 like table0;

修改删除表

   ALTER TABLE table_name RENAME TO new_table_name
alter table dept_partition add columns(deptdesc string);
desc dept_partition;
alter table dept_partition change column deptdesc desc int;
drop table dept_partition;

向表中装载数据(Load)

hive> load data [local] inpath '/opt/module/datas/student.txt' [overwrite] into table student
()load data:表示加载数据
()local:表示从本地加载数据到hive表(复制);否则从HDFS加载数据到hive表(移动)
()inpath:表示加载数据的路径
()overwrite into:表示覆盖表中已有数据,否则表示追加
()into table:表示加载到哪张表
()student:表示具体的表

通过查询语句向表中插入数据(Insert)

    insert into table  student values(,'wangwang');
insert into table student select * from student2;
create table if not exists student3 as select id, name from
student;
create table if not exists student4(
id int, name string
)
row format delimited fields terminated by '\t'
location '/user/hive/warehouse/student4';

数据导出

Insert导出
  .将查询的结果导出到本地
  hive (default)> insert overwrite local directory '/opt/module/datas/export/student'
select * from student;
  .将查询的结果格式化导出到本地
  hive(default)>insert overwrite local directory '/opt/module/datas/export/student1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from student;
  .将查询的结果导出到HDFS上(没有local)
  hive (default)> insert overwrite directory '/user/bigdata/student2'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;
Hadoop命令导出到本地
  hive (default)> dfs -get /user/hive/warehouse/student/month=/student.txt
  /opt/module/datas/export/student3.txt;
  Hive Shell 命令导出到本地
  基本语法:(hive -f/-e 执行语句或者脚本 > file)
  [hadoop@hadoop101 hive]$ bin/hive -e 'select * from default.student;' >
  /opt/module/datas/export/student4.txt;
Export导出到HDFS上[了解]
  (default)>export table default.student to
  '/user/hive/warehouse/export/student';
Sqoop导出

hive学习(1)的更多相关文章

  1. hive学习

    大数据的仓库Hive学习  10期-崔晓光 2016-06-20  大数据   hadoop   10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...

  2. Hive学习路线图(转)

    Hadoophivehqlroadmap学习路线图   1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...

  3. 【转】Hive学习路线图

    原文博客出自于:http://blog.fens.me/hadoop-hive-roadmap/ 感谢! Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Ha ...

  4. Hive学习之六 《Hive进阶— —hive jdbc》 详解

    接Hive学习五 http://www.cnblogs.com/invban/p/5331159.html 一.配置环境变量 hive jdbc的开发,在开发环境中,配置Java环境变量 修改/etc ...

  5. Hive学习路线图--张丹老师

    前言 Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作 ...

  6. Hive学习 系列博客

    原 Hive作业优化 原 Hive学习六:HIVE日志分析(用户画像) 原 Hive学习五--日志案例分析 原 Hive学习三 原 Hive学习二 原 Hive学习一 博客来源,https://blo ...

  7. hive学习路线

    hive学习路线图:

  8. Hive学习之修改表、分区、列

    Hive学习之修改表.分区.列 https://blog.csdn.net/skywalker_only/article/details/30224309 https://www.cnblogs.co ...

  9. [转帖]Hive学习之路 (一)Hive初识

    Hive学习之路 (一)Hive初识 https://www.cnblogs.com/qingyunzong/p/8707885.html 讨论QQ:1586558083 目录 Hive 简介 什么是 ...

  10. Hive学习目录

    大数据之Hive学习目录 第 1 章 Hive入门 1.1 什么是Hive 1.2 Hive的优缺点 1.2.1 优点 1.2.2 缺点 1.3 *Hive架构原理 1.4 Hive和数据库比较 第 ...

随机推荐

  1. LeetCode 1135. Connecting Cities With Minimum Cost

    原题链接在这里:https://leetcode.com/problems/connecting-cities-with-minimum-cost/ 题目: There are N cities nu ...

  2. 用OKR提升员工的执行力

    很多管理者在公司管控的过程中常常出现一种乏力的感觉,觉得很多事情推进不下去,结果总是令人不满意.管理者总是会吐槽,“员工执行力差!”而此时大部分管理者会认为公司执行力差是员工能力和态度的问题. 事实上 ...

  3. Windows用户模式调试内部组件

    简介 允许用户模式调试工作的内部机制很少得到充分的解释.更糟糕的是,这些机制在Windows XP中已经发生了根本性的变化,当许多支持被重新编写时,还通过将ntdll中的大多数例程作为本地API的一部 ...

  4. AnsiString

    原文链接:https://blog.csdn.net/Li_Ning_/article/details/82981092 /* * 编号:Number 1 * 函数:substring * 说明:截取 ...

  5. 洛谷P2877 [USACO07NOV]防晒霜Sunscreen

    题目 此题有多种贪心方法. 首先简化题意: 有几个在数轴上的区间,和几个在数轴上确定的位置的点,问用这些数目的点,最多能满足多少个区间里有点. 注意:此题跟区间选点问题不一样,每个点只能满足一个区间, ...

  6. MSSQL 数据库复制脚本

    --新表存在复制数据 insert into 新表 (字段) select 字段 from 旧表 -- 新表不存在复制数据 select * into 新表 from 旧表

  7. Koa Session的使用

    Session 简单介绍 session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上. Session 的工作流程 当浏览器访问服务器 ...

  8. 百度编辑器(ueditor)踩坑,图片转存无法使用

    在使用 百度编辑器 的过程中碰到了一些问题,图片转存功能无法使用, 即便是疯狂地在官方 Demo.文档.论坛甚至是 GitHub 上也没找到理想的答案.(┗|`O′|┛) (真是日了狗) 问题描述 默 ...

  9. 第09组 Beta冲刺(1/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  10. python实现读取并显示图片的两种方法

    https://www.cnblogs.com/lantingg/p/9259840.html 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片. ...