0


hive的简单认识

hive

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

文章目录

是一个数据挖掘工具

会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行到/<//configuration>之前都删除

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

把下面的复制到confguration下面

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://192.168.38.1:3306/hive</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>root</value>
      <description>password to use against metastore database</description>
    </property>

在这里插入图片描述

在这里插入图片描述

执行

/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

多表查询

内连接

外连接:左,右,全

子查询

  1. 用查询结果当表
  2. 把查询结果当条件

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对应太少的数据,数据不平衡,也就是数据倾斜


本文转载自: https://blog.csdn.net/weixin_63548495/article/details/138253773
版权归原作者 浮千Z 所有, 如有侵权,请联系我们删除。

“hive的简单认识”的评论:

还没有评论