HIVE數據仓库操作(数据库操作,表操作,开窗函数,炸裂函数,外部表,内部表,分区表,分桶表)

本文详细介绍了Hive在大数据处理中的各种操作,包括数据加载、表操作、分区表、分桶表以及各种函数的使用,如开窗函数、炸裂函数等,帮助读者深入理解Hive的实战应用。
摘要由CSDN通过智能技术生成

文章目录

HIVE介绍

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质
将HQL转化成MapReduce程序
Hive在Hadoop生态中的位置如下图所示:
在这里插入图片描述
hive和hadoop的关系:
1)Hive处理的数据存储在HDFS
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在Yarn上

Hive的基本操作(在操作之前需要先启动hdfs(存储源数据)和mysql数据库(存储表结构))

一、错误

在这里插入图片描述
seman 表示是一个无法解决的错误
parse 表示是一个解析异常,修改完hql语句之后就能解决错误
剩下其他错误需要通过查看日志来确定是什么错 cat /tmp/root/hive.log

二、进入hive操作界面的两种方式

2.1、直接输 hive 就可以进入
2.2、beeline连接(连接hive的三种方式:cli,webGUI,beeline(JDBC/ODBC))界面比较美观
一、启动后台
hive --service hiveserver2
netstat -ntlp | grep 10000 查看hiveserver2(端口号是10000) 是否启动
二、进入客户端
2.1、 beeline -u jdbc:hive2://localhost:10000 -n root hive2之后才有这个beeline启动
!quit 退出客户端
2.2、beeline -u jdbc:hive2://localhost:10000 -n root 启动的时候会报两个错
一、错误
在这里插入图片描述
二、解决方法
首先,要在hadoop的core-site.xml中添加如下配置:

<property>
  <name>hadoop.proxyuser.root.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>

修改之后需要在重新期待hadoop集群(start-all.sh)

三、往表中添加数据的方式

3.1 hive> insert into table stu values(1,“xss”);

3.2、创建一个表然后再用load将数据加载进表对应的hdfs目录

hive> create table stu(id int,name string)row format delimited fields terminated by ","; 

1、row format:对数据行格式的声明,其声明的目的是为了让hive知道以什么方式处理行数据,以便让hive能够以正确的方式来处理文件中的行,并与表中的行对应起来。
2、delimited:指定哪些是分隔符,这些分隔符用于将文本拆分成字段。
3、fields terminated by ‘\t’:告诉hive,每个字段之间的分隔符是‘\t’,这必须与文件中字段的分隔符一致。如果不一致,虽然可以成功地将数据加载到hdfs上,但是通过select查询得到的字段值是不正确的,如为null。也就是说,hive在查询时会使用’\t’切分每一行,来获得字段的值。

加载/root/data/student.txt 文件到student数据库表中。

hive> load data local inpath ‘/root/data/student.txt‘ overwrite into table student;

1、load data:加载外部数据到HDFS上。
2、local:指加载的是本地文件系统中的数据,即所在Linux中的数据文件。如果没有这个参数,则是加载hdfs上的文件。
3、inpath:文件所在的路径。如果没有使用local,则该参数的值应为hdfs的文件路径,即hdfs://192.168.100.40:9000/…
4、overwrite:意思是加载数据并覆盖原有文件中的内容。如果不使用该关键字,则在原来的文件中追加新的数据。
5、into table:指定要关联的hive。如果表关联错了,一般情况下不会报告异常,但后期的查询等操作的结果是非预期的。

3.3、根据查询结果创建表(查询的结果会添加到新创建的表中,这种方式不能创建外部表) create as select

create table if not exists student3
as select id, name from student;

3.4、创建表时通过Location指定加载数据路径,然后把txt文档传到设定的路径下

1)创建表,并指定在hdfs上的位置
hive (default)> create table if not exists student5(
              id int, name string
              )
              row format delimited fields terminated by ‘\t’
              location ‘/user/hive/warehouse/student5’;
2)上传数据到hdfs上
hive (default)> dfs -put /root/data/student.txt  /user/hive/warehouse/student5;
3)查询数据
hive (default)> select * from student5;

3.5、根据 student 创建相同结构的表 student4

create table if not exists student4 like student;

3.6、通过查询结果添加进表 insert select

insert into table stutwo select id,name from stu;

四、在hive中操作haoop

dfs -mkdir /s; 在hadoop上创建一个目录
dfs -rm -r /s; 在hadoop上删除一个目录
dfs -put /root/data/s.txt /s; 将s.txt 上传到hadoop的s目录下
dfs -ls /; 查看haoop上的目录
dfs -chmod 777 /user; 将haoop上的权限修改为777

五、在hive中查看linux上的文件 在linux命令之前加感叹号

!cat /root/s.txt

六、在不进入hive的情况下在linux界面操作hive

(1)“-e”不进入hive的交互窗口执行sql语句
[root@master hive]$ bin/hive -e “select id from student;”
(2)“-f”执行脚本中sql语句
(1)在/root/data目录下创建hivef.sql文件
[root@master ~]$ touch hivef.sql
文件中写入正确的sq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值