首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

hive安装过程全程解析、hive常规操作、说明

  • 25-03-07 20:01
  • 3038
  • 9992
blog.csdn.net

hive安装过程全程解析、hive常规操作、说明

hive相关说明:

1.创建表的操作(create talbe)包含两个步骤:表创建过程和数据加载步骤(这两个过程可以在同一语句中完成)

在数据加载过程中,实际数据会移动到数据仓库目录中。之后的数据访问将会直接在数据仓库目录中完成。删除

表时,表中的数据和元数据将会被同时删除。

2.外部表的创建只有一个步骤,加载数据和创建表同时完成,实际数据存储在创建语句LOCATION指定的HDFS路径中,并

不会移动到数据仓库目录中。如果删除一个外部表,仅会删除元数据,表中的数据不会被删除。

3.Hive的元数据存储

目前,hive将元数据存储在RDBMS中,比如MySQL、Derby中。为了支持多链接,我们使用MySQL存储元数据

使用场景:

1.电影评分

2.网络日志数据(Weblog)

首先下载hive,我个人使用是的apache-hive-0.13.0-bin.tar.gz

一、hive安装步骤

1.上传hive到linux机器itcast03上
2.解压到/itcast/目录下
 tar -zxvf apache-hive-0.13.0-bin.tar.gz -C /itcast/
3.执行hive
 ./hive // 进入
 show tables; // 显示表
 show databases; // 显示数据库
 create table student (id int,name string); // 创建student表
 show create table student; // 显示创建student表信息
 load data local inpath '/root/student.txt' into table student; // 从本地加载数据
 select count(*) from student; // 查询记录数(此过程,hive将查询过程转化为map、reducer)
	使用浏览器进行查看http://192.168.8.201:50070/dfshealth.jsp --->  user/hive/warehouse/student.txt

二、hive工作原理

hive工作原理,是将元数据信息存储在数据库中(metastore_db),hive元数据信息包括表的名字、表的列、分区及其
属性,表的属性(是否为外部表等),表的数据所在目录等。真实数据存储在hdfs上。
metastore_db默认使用内嵌的Derby数据库作为存储引擎,Derby引擎的缺点:
一次只能打开一个会话。也就是说,如果你在另外一个目录打开hive,会产生新的metastore_db,并且两个metastore_db
所存储的元数据信息不同,这就造成数据的不同,即只支持单链接

三、使用MySQL存储hive元数据信息

解决方法:
我们采用MySQL作为外置存储引擎,以支持多链接访问!!!
解决步骤:
1.查询以前安装mysql相关包(itcast05机器上进行)
rpm -qa | grep mysql
2.暴力删除这个包
rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
3.重新安装MySQL 
rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
修改mysql的密码(这里设置为123)
/usr/bin/mysql_secure_installation
(注意:删除匿名用户,允许用户远程连接)
登陆mysql
mysql -uroot -p123

四、hive分布式配置

cp hive-default.xml.template hive-site.xml
修改hive-site.xml(删除所有内容,只留一个<property></property>)
添加如下内容:
<property>
 <name>javax.jdo.option.ConnectionURL</name>
 <value>jdbc:mysql://itcast05:3306/hive?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>javax.jdo.option.ConnectionPassword</name>
 <value>123</value>
 <description>password to use against metastore database</description>
</property>
5.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
cp mysql-connector-5.1.8.jar /itcast/apache-hive-0.13.0-bin/lib/
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  测试hive分布式是否成功
在A目录下,进入/hive先创建people表 create table people (id int, name string)
在B目录下,进入/hive查看表信息,show tables; 如果可以看到people表,表明搭建成功!!!
查看MySQL数据信息(ip:192.168.8.205, 用户名: root,密码: 123):
在windows下使用sqlyog工具,远程登录linux平台下的MySQL,并查看相关元数据信息。
6.建表(默认是内部表)
create table trade_detail(id bigint, account string, income double, expenses
double, time string) row format delimited fields terminated by '\t';
建分区表
create table td_part(id bigint, account string, income double, expenses double,
time string) partitioned by (logdate string) row format delimited fields terminated by
'\t';
建外部表
create external table td_ext(id bigint, account string, income double, expenses
double, time string) row format delimited fields terminated by '\t' location '/td_ext';
7.创建分区表
普通表和分区表区别:有大量数据增加的需要建分区表
create table book (id bigint, name string) partitioned by (pubdate string) row
format delimited fields terminated by '\t';
分区表加载数据
load data local inpath './book.txt' overwrite into table book partition
(pubdate='2010-08-22');
load data local inpath '/root/data.am' into table beauty partition (nation="USA");
select nation, avg(size) from beauties group by nation order by avg(size);

五、hive实操

1.创建一个hdfs目录
hadoop fs -mkdir /data
2.在linux本地创建student.txt文件,并添加如下内容
101     xiaoming
102     wangwu
103     zhangli
104     xiaodong
3.向目录中传送数据
hadoop fs -put student.txt /data/a.txt
hadoop fs -put student.txt /data/b.txt
4.创建一张外部表,指向data目录
外部表:外部表是指向已经在HDFS中存在的数据,也可以创建分区。
create external table ext_student (id int,name string) row format delimited fields terminated by '\t' location '/data';
5.查询数据
select * from ext_student;
结果如下:
101     xiaoming
102     wangwu
103     zhangli
104     xiaodong
101     xiaoming
102     wangwu
103     zhangli
104     xiaodong
101     xiaoming
102     wangwu
103     zhangli
104     xiaodong
6.在外部使用hadoop放入数据
hadoop fs -put pep.avi /data 
再执行查询,则会将数据查询到(不管是内部表,还是外部表)

    场景:数据量很大的情况下,使用分区表

 

1.创建一个外部分区表,存储美女信息
create external table beauties (id bigint,name string,size double) partitioned by (nation string) row format delimited fields terminated by '\t' location '/beauty';
2.从本地加载数据
linux下创建文件/root/b.c,添加内容如下
1       cls     30
2       jingtian        45
3       bingbing        50
然后将数据加载到hive中
load data local inpath '/root/b.c' into table beauties partition (nation='China');
3.查询数据
select * from beauties where nation ='China';
4.创建一个分区
alter table beauties add partition(nation='Japan') location "/beauty/natio location "/beauty/nation=Japan";
5.查询刚刚创建的分区信息,查询无结果
select * from beauties where nation="Japan";
6.从linux上传一个数据到/beauty/nation=Japan/目录下
hadoop fs -put b.c /beauty/nation=Japan/
再次查询,有新结果。也就是说只要目录下有数据即可
7.执行复杂一点的查询,如下:
select * from beauties where size>40;
我们会看到此过程hive会将sql查询转化为mapreduce,所以特别适合大数据量的查询计算,其结查如下:
2       jingtian        45.0    China
3       bingbing        50.0    China
2       jingtian        45.0    Japan
3       bingbing        50.0    Japan

文章最后,给大家推荐一些受欢迎的技术博客链接:

  1. JAVA相关的深度技术博客链接
  2. Flinak 相关技术博客链接
  3. Spark 核心技术链接
  4. 设计模式 —— 深度技术博客链接
  5. 机器学习 —— 深度技术博客链接
  6. Hadoop相关技术博客链接
  7. 超全干货--Flink思维导图,花了3周左右编写、校对
  8. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
  9. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
  10. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
  11. 深入聊聊Java 垃圾回收机制【附原理图及调优方法】

欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

                                           

       

注:本文转载自blog.csdn.net的不埋雷的探长的文章"https://blog.csdn.net/weixin_32265569/article/details/73921504"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top