ITPub博客

首页 > 大数据 > 数据挖掘 > 好程序员大数据培训分享Hive基础知识讲解

好程序员大数据培训分享Hive基础知识讲解

原创 数据挖掘 作者:好程序员 时间:2020-08-05 14:51:49 0 删除 编辑

   今天 好程序员 大数据培训老师给大家技术介绍一下关于Hive 的一些基础知识,首先 Hive 作为数据仓库,起源于 Facebook ,工作原理大致可以解释为:对用户输入的 HQL 语句进行解释,编译,优化并执行生成查询计划,并转化为 MapReduce 任务进而执行:解释器——编译器——优化器——执行器。

   Hive 的元数据一般存储在关系型数据库中,如 MySql;

   底层存储用到的是HDFS 分布式存储系统。它的优点: 1.? 简单易上手:提供了类 SQL 查询语言 HQL ; 2. 可扩展:为超大数据集设计了计算 / 扩展能力( MR 作为计算引擎, HDFS 作为存储系统); 3. 提供统一的元数据管理; 4.Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数:继承 hive 的 UDF 类,重写 evaluate 方法; 5. 容错:良好的容错性,节点出现问题 SQL 仍可完成执行;

   缺点:1.Hive 的 HQL 表达能力有限; 2. 效率比较低,自动生成的 Mapreduce 作业,通常情况下不够智能化,且调优比较困难;

   Hive 用户接口

   1 ) HiveCLI ( HiveCommandLine , Hive 命令行),客户端可以直接在命令行模式下进行操作

   2 ) HWI ( HiveWebInterface , HiveWeb 接口), Hive 提供了更直观的 Web 界面

   3 ) hiveserver , Hive 提供了 Thrift 服务, Thrift 客户端目前支持 C++/Java/PHP/Python/Ruby

   Hive 常用文件格式:

   Textfile :默认格式,数据不做压缩,磁盘开销大,数据解析开销大;

   SEQUENCEFILE : SequenceFile 是 HadoopAPI 提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点;

   rcfile : RCFILE 是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个 record 在一个块上,避免读一个记录需要读取多个 block 。其次,块数据列式存储,有利于数据压缩和快速的列存取 ;

   parquet:ApacheParquet 是 Hadoop 生态圈中一种新型列式存储格式,它可以兼容 Hadoop 生态圈中大多数计算框架 ;

   Hive 数据导入导出

   Hive 表中的数据,同时支持从本地数据导入、从其他表导入数据、导出数据到本地文件系统、导出数据到 HDFS 中

   Hive 基本语句

   Hive 建表语句基本跟关系型数据库建表语句相同,区别在于语句尾端指定了列分隔符:

   ROWFORMATDELIMITEDFIELDSTERMINATEDBY ‘ , ’

   指定了列分隔符为“,”;

   对于分区表,会有分区字段的说明:

   PARTITIONEDBY(countrySTRING,stateSTRING)

   用“ country “、” state ”两个字段分区;

   以及指定存储文件的格式:

   STOREDASTEXTFILE 。

   关于内连接、外连接和半连接:

   几种连接区别简单概括为:内连接只显示了俩张表都存在的数据,而外连接则是显示出所有的数据,其中左连接是左外边的表输出完整数据。右外连接是右边的表输出完整数据,全外连接就是两张表的所有行全部输出。做半连接用来补充Hive 相对于 MySQL 等语句缺失的 in/exists 这样的子句,就用 leftjoin 代替,和 leftjoin 的区别在于右边的表数据不会加载进结果;

   orderby 和 sortby:

   ORDERBY 会对查询结果集执行一个全局排序 , 所有的数据都通过一个 reducer 进行处理 ;SORTBY ,其只会在每个 reducer 中对数据进行排序,也就是执行一个局部排序过程 , 生产中可以和 DISTRIBUTEBY 一起用,实现分区并排序。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913864/viewspace-2709433/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    195009