hive

小白的hive学习笔记 2024/4/27 17:24 今天写的比较急,先凑活看,有空的话再完善一下

文章目录

hive是一个数据挖掘工具hive安装在线安装

**4.安装mysql**1.先安装依赖包2.添加mysql组3.RPM的方式安装server4.RPM的方式安装client5.修改密码6.启动mysql服务

安装hive1.解压安装

进入hive

处理数据的过程创建内部表加载数据单表查询多表查询子查询当表当条件

会创建分区表添加数据1. insert into2.load3.手动创建目录,直接将文件上传

外部表会创建UDF函数会设置map个数设置redudce个数

处理数据倾斜

是一个数据挖掘工具

会sql就会hive

hive安装

这四个文件传到root下

在线安装

-y:安装过程都同意(yes)

yum install -y

4.安装mysql

4.1 tar -xzvf hive.tar.gz

目录结构

bin可执行 examples lib jar NOTICE RELEASE_NOTES.txt

conf配置文件 hcatalog(Hcatalog是apache开源的对于表和底层数据管理统一服务平台,hive就是通过hcatlog获取元数据信息) LICENSE README.txt scripts

cp /usr/local/hive/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib

rm -rf /usr/local/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar

4.2 让mysql当作metastore

4.2.1mysql安装

64位安装

*安装:*

1.先安装依赖包

yum install -y perl-Module-Install.noarch

yum -y install autoconf

2.添加mysql组

groupadd mysql

添加mysql用户

useradd -r -g mysql mysql

3.RPM的方式安装server

yum install libaio

rpm -e mariadb-libs-1:5.5.56-2.el7.x86_64 --nodeps 强制删除

rpm -ivh MySQL-server-5.6.36-1.linux_glibc2.5.x86_64.rpm

结尾显示这些内容就说明server安装成功了

4.RPM的方式安装client

rpm -ivh MySQL-client-5.6.36-1.linux_glibc2.5.x86_64.rpm

5.修改密码

#先确保mysql没有启动

#如果启动了 使用 service mysql stop关闭

mysqld_safe --user=mysql --skip-grant-tables --skip-networking & #新开一个命令窗口 mysql -u root use mysql;

#修改root密码

UPDATE user SET Password=PASSWORD(‘root’) where USER=‘root’;

#关闭只读状态 set global read_only=0; flush privileges;

新打开一个窗口: ps -aux |grep mysql 将所有进程kill掉

6.启动mysql服务

service mysql start

mysql -u root -p

SET Password=PASSWORD(‘root’)

mysql

create database 库名;

库就是文件夹,为了组织表方便

安装hive

1.解压安装

在root下

-C 拷贝

tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/

tar:

用来创建归档文件,可以解压、也可以压缩

rpm:

安装rpm

删除

vim hive-site.xml

从22行到/之前都删除

:22,3900d(这是快捷删除22 行到3900行,这里的具体删除不是22到3900)

把下面的复制到confguration下面

javax.jdo.option.ConnectionURL

jdbc:mysql://192.168.38.1:3306/hive

JDBC connect string for a JDBC metastore

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

Driver class name for a JDBC metastore

javax.jdo.option.ConnectionUserName

root

username to use against metastore database

javax.jdo.option.ConnectionPassword

root

password to use against metastore database

执行

/usr/local/hive/bin/schematool -dbType mysql -initSchema

用来再hive下面生成53张表

包括数据位置,在表TBLS中存储

hive安装完毕

hive的存储和计算都需要Hadoop

所以要使用hive,就要先start-dfs.sh start-yarn.sh

进入hive

处理数据的过程

创建内部表

mysql

创建库 create database

创建表 create table 表名(列1, 数据类型…)

单表查询

一般:

where:

group by

多表查询

内连接

外连接:左,右,全

子查询

用查询结果当表把查询结果当条件

mysql数据类型:int , bigint ,varhcar,date,datetiome,char,decimal

简单理解hive和mysql一模一样会mysql就会mysql

varchar 可以直接向string

数据文件分隔符

设置分隔符为”,“

row format delinited fields terminated by ',';

split(”,“);

加入数据,可以insert into,但是比较慢

加载数据

load data local inpath '/root/1.txt' into table stu;

单表查询

跟mysql一样

一insert into hive就mapreduce,hive本质就是mapreduce

查看表结构

desc stu;

多表查询

子查询

当表

当条件

select max(count(1)) from stu group by sex;

select sex,count(1) from stu group by sex;

select * from stu where sex in

(

select sex from

(select sex,count(1) from stu group by sex;)

where

(select max(count(1)) from stu group by sex;)

)

会创建分区表

通常,按照某个范围进行数据统计,举例TB,每天都产生大量的数据,每天处理每天的数据

如果把所有数据不分区存,需要先where一下,过滤大量的数据

注意,hive没有主键

创建:

delimited 打错了

分区为什么速度快?

会精确到每天的文件夹下,而不是把表内所有数据拿来运算。

添加数据

1. insert into

2.load

3.手动创建目录,直接将文件上传

问题:不能自动加分区,mysql没变

所以要向mysql添加分区

修复这个表

msck repair table ord_info;

外部表

加了一个关键字:external

外部表比较安全,删掉了,数据不会丢

会创建UDF函数

相当于mysql自定义函数

当hive的函数不够用,我们可以自定义函数

用java写

会设置map个数

一个map处理多大数据?

用公式如下

然后用数据总的大小,除一个map处理的数据,得到map的个数

数据很大的时候,可以设置多个map,加快速度

设置redudce个数

explain 查看执行计划,看看这个sql好不好

explain 能看到程序的执行过程

处理数据倾斜

什么是数据倾斜?

reduce处理一组一组数据的,假设有两组数据,一个reduce处理一组数据,假设,一个reduce运行不完了、长时间运行,一个reduce很快运行结束。

说明一个key对应太多的数据,一个key对应太少的数据,数据不平衡,也就是数据倾斜

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: