当前位置: 首页 / 技术分享 / 正文
Hive基础知识讲解-深圳大数据培训

2020-08-05

深圳大数据培训 好程序员

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

大数据1

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

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

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

  Hive用户接口

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

  2HWIHiveWebInterfaceHiveWeb接口),Hive提供了更直观的Web界面

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

  Hive常用文件格式:

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

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

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

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

  Hive数据导入导出

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

  Hive基本语句

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

  ROWFORMATDELIMITEDFIELDSTERMINATEDBY,

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

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

  PARTITIONEDBY(countrySTRING,stateSTRING)

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

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

  STOREDASTEXTFILE

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

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

  orderbysortby:

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

好程序员公众号

  • · 剖析行业发展趋势
  • · 分享大厂面试心得
  • · 汇聚企业项目源码
  • · 下载全套高精尖教程

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
在线咨询
免费试听
入学教程
立即报名

Copyright 2011-2020 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公安网11010802011455号