首页 > 其他分享 >Hive

Hive

时间:2023-10-30 17:36:59浏览次数:41  
标签:存储 hive 查询 Hive mysql 数据

  因为传统数仓的不足,大家希望使用上分布式存储,也就是HDFS。然而使用HDFS后发现,基于数据库的数据仓库用SQL就能做查询,现在换到HDFS上面,只能用Mapreduce任务去做分析。给分析代码极大的不便,因此需要一个框架,使用SQL来做HDFS的查询。Hive正是基于类似SQL的语言完成对hdfs数据的查询分析的框架。

什么是Hive?

  Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive有什么特点?

  • Hive是一个构建于Hadoop顶层的数据仓库工具,可以查询和管理PB级别的分布式数据。
  • 支持大规模数据存储、分析,具有良好的可扩展性
  • 某种程度上可以看作是用户编程接口,本身不存储和处理数据。
  • 依赖分布式文件系统HDFS存储数据。
  • 依赖分布式并行计算模型MapReduce处理数据。
  • 定义了简单的类似SQL 的查询语言——HiveQL。
  • 用户可以通过编写的HiveQL语句运行MapReduce任务。
  • 可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop平台上。
  • 是一个可以提供有效、合理、直观组织和使用数据的分析工具。

Hive表和Mysql表区别

1、查询语言不同:hive是hql语言,mysql是sql语句;

2、数据存储位置不同:hive是把数据存储在hdfs上,而mysql数据是存储在自己的系统中;

3、数据格式:hive数据格式可以用户自定义,mysql有自己的系统定义格式;

4、数据更新:hive不支持数据更新,只可以读,不可以写,而sql支持数据更新;

5、索引:hive没有索引,因此查询数据的时候是通过mapreduce很暴力的把数据都查询一遍,也造成了hive查询数据速度很慢的原因,而mysql有索引;

6、延迟性:hive延迟性高,原因就是上边一点所说的,而mysql延迟性低;

7、数据规模:hive存储的数据量超级大,而mysql只是存储一些少量的业务数据;

8、底层执行原理:hive底层是用的mapreduce,而mysql是excutor执行器;

语法区别

 

Hive系统架构

 1、用户接口CLI

CLI,即Shell命令行。

2、JDBC/ODBC

JDBC/ODBC是 Hive的Java,与使用传统数据库JDBC的方式类似。

3、Web GUI

WebGUI是通过浏览器访问 Hive

4、Thrift Server

Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++,Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript,Node.js, Smalltalk, and OCaml这些编程语言间无缝结合的、高效的服务。

5、Driver(complier,optimizer Excutor)

解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。

6、metastore

Hive将元数据存储在数据库中(metastore),目前只支持mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

7、JobTracker&TaskTracker

Hived的大部分的查询由 MapReduce完成。其中JobTracker,用来协调作业的运行。TaskTracker,用来处理作业划分后的任务。

8、DataNode&NameNode

Hive的数据存储在 HDFS中,NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。

 

标签:存储,hive,查询,Hive,mysql,数据
From: https://www.cnblogs.com/syq816/p/17798202.html

相关文章

  • Hive中json格式字段清洗与提取
    废话不多说,直接上案例如下是某json字段的查询结果,可以看出它是一个json数组selectsales_pricefromorder_goodswhereorder_number='R1001';--结果:[{"threshold_number":1,"group_id":1,"gear_price":"120.00"},{"threshold_number"......
  • hive高频使用的拼接函数及“避坑”
    hive高频使用的拼接函数及“避坑”说到拼接函数应用场景和使用频次还是非常高,比如一个员工在公司充当多个角色,我们在底层存数的时候往往是多行,但是应用的时候我们通常会只需要一行,角色字段进行拼接,这样join其他表的时候呢也不会造成数据被重复引用计算。1、拼接多个字符串concat_n......
  • Hive学习笔记:nvl和coalesce函数的区别
    nvl函数和coalesce函数都是用来处理空值的函数,但略有不同。注意:非NULL值为NULL,如果是'','','null','NULL'等视为字符串,返回参数本身。一、nvl函数nvl只能处理2个参数,如果第1个不是null,则返回第1个参数,否则返回第2个参数。selectnvl(1,2);--1selectnvl(1,n......
  • hive基本操作
    间隔几年,又开始频繁写hive的sql,整理一点关于hive常用的基本语句,只有天天写的时候才很熟练,过几年很容易遗忘的东西。hive创建表droptableifexistsods.tb_fdn_testtable;createtableifnotexistsods.tb_fdn_testtable(citystringcomment'地市'......
  • oracle打开/关闭归档日志ARCHIVELOG
    1.使用SQLPlus登录用户名:sqlplus密码:assysdba 2.查询数据库是否是归档模式:查询结果为“ARCHIVELOG”表示数据库为归档模式SELECTlog_modeFROMv$database;3.关闭数据库shutdownimmediate;4.启动数据库mount模式startupmount;5.启动归档日志alte......
  • ORA16401archivelogrejectedbyRFS解决方法
    之前做DataGuard做了一次Switchover切换,之后standby库就报如下错误:ThuJul2908:03:292010Errorsinfile/dba/oracle/admin/newccs/udump/newccs_rfs_19602.trc:ORA-16401:archivelogrejectedbyRFSThuJul2908:03:292010Errorsinfile/dba/oracle/admin/newc......
  • Hive学习笔记:多列求最大值、最小值
    一、最大值当在Hive中需要对多列数据求最大值时,可以使用函数greatest(a,b,c,d)实现。selectgreatest(a,b,c)from( select10asa,20asb,30asc)dd;--结果:30举个具体栗子:计算用户消费时,如果用户套餐有最低消费129元的话,不满12......
  • 农业全要素生产率的计算(使用HiveQL分析)
    需求:工作中需要计算农业全要素生产率数据,需要利用HiveQL进行数据仓库提取,然后进行转换式计算,最后需要进行要素生产效率分析,用于后续的深度数据挖掘。解决:CREATETABLEIFNOTEXISTSmytable( col1STRING, col2INT, col3DOUBLE)ROWFORMATDELIMITEDFIELDSTERMIN......
  • 报错Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.meta
    在执行hive on spark的时候 上面的错误可能有以下几种问题:1.版本问题 不匹配2.时间参数问题  设置的参数太小了3.在hive-site.xml文件中没有配置spark的home我的问题属于第一个问题导致没有跑成功当时也在想是不是内存出现了问题 ......
  • hive表加字段
    hive原表结构hive表加新字段interface_typealtertabletest.test_tableaddcolumns(interface_typestring);hive表新表结构......