hive知识点

Hive 是基于 Hadoop 的数据仓库工具,适用于结构化数据的批量统计分析,不适用于实时查询和行级更新。Hive 提供类似 SQL 的查询功能,支持可扩展性、用户自定义函数和良好的容错性。主要特点包括:可扩展性、延展性和容错性。Hive 的操作包括启动服务、连接、建表、分区以及数据加载,其中分区是优化查询的重要手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. hive的基本思想

    hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
    hadoop处理结构化数据的数据仓库
    不是关系型数据库,不适合OLTP在线事务处理,例如银行
    不适合实时查询和行级更新。
    总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

  2. Hive的特点

    可扩展
    Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

    延展性
    Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

    容错
    良好的容错性,节点出现问题SQL仍可完成执行。

  3. 启动服务

    nohup bin/hiveserver2 1>/dev/null 2>&1 & 后台启动,只要别的客户端连接上它就可以,可以多个beeline客户端
    hive客户端不支持并发访问,同时起两个塞住了可以用beeline

  4. 连接

    !connect jdbc:hive2//s201:10000
    直接连接
    bin/beeline -u jdbc:hive2://s201:10000 -n root
    s201是你登录这台机器的主机名字
    在hive命令模式下可以用 dfs -put … 等命令操作hdfs
    mysql复制表 create table tt as select * from users ; //携带数据和表结构
    mysql复制表 create table tt like users ; //不带数据,只有表结构
    hive2.0 以后执行引擎换成了spark

  5. 脚本化运行

    例如:

    	#!/bin/bash
    	hive -e "select * from db_order.t_order"
    	hive -e "select * from default.t_user"
    	hql="create table  default.t_bash as select * from db_order.t_order"
    	hive -e "$hql"
    

    hql语句复杂,把hql语句写入一个文件

       select * from db_order.t_order;
       select count(1) from db_order.t_user;
    

    hive -f /root/x.hql

  6. 建库生成在目录下

    例如:建的是a.db,在指定目录
    hdfs://hdp20-01:9000/user/hive/warehouse/a.db

  7. 建表生成在库目录下

    建表show
    /user/hive/warehouse/db_order.db/show

8.删除表

 hive会从元数据库中清除关于这个表的信息;
 hive还会从hdfs中删除这个表的表目录;
  1. 内部表与外部表

    内部表(MANAGED_TABLE):表目录按照hive的规范来部署,位于hive的仓库目录/user/hive/warehouse中
    外部表(EXTERNAL_TABLE):表目录由建表用户自己指定

    外部表和内部表的特性差别:

     内部表目录在hive仓库目录中,外部表的目录由用户自己决定
     删除一个内部表时候,hive会清楚它的元数据,并且删除表数据目录(删除表数据也跟着被删除了)
     删除一个外部表时候,hive只会清楚元数据而已( 删除表时数据不删。)
    
  2. 分区表

    分区表的实质是:在表目录中为数据文件创建分区子目录,以便于在查询时,MR程序可以针对分区子目录中的数据进行
    处理,缩减读取数据的范围。
    Hive优化手段之一就是建分区表,原理:从目录的层面控制搜索数据的范围
    分区字段不能是表中定义的字段

    排序等操作可以将分区字段当做表字段用
    查看表中所有数据不要指定条件

    分区是一个整体,加入里面是年份和月份分区,他是一个整体,你直接往其中一个下面添加不可
    以,语法就报错。

    hive不支持非等值的join

  3. load

    Load 操作只是单纯的复制/移动操作,将数据文件移动到 Hive 表对应的位置。
    如果指定了 LOCAL, load 命令会去查找本地文件系统中的 filepath。
    如果没有指定 LOCAL 关键字,则根据inpath中的uri

    OVERWRITE 关键字

    如果使用了 OVERWRITE 关键字,则目标表(或者分区)中的内容会被删除,然后再将 filepath 指向的文件/目录中的内
    容添加到表/分区中。
    如果目标表(分区)已经有一个文件,并且文件名和 filepath 中的文件名冲突,那么现有的文件会被新文件所替代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值