你的位置:首页 > Java教程

[Java教程]spark hive区别


一:Hive本质是是什么

1:hive是分布式又是数据仓库,同时又是查询引擎,Spark SQL只是取代的HIVE的查询引擎这一部分,企业一般使用Hive+spark SQL进行开发

2:hive的主要工作

      1>  把HQL翻译长map-reduce的代码,并且有可能产生很多mapreduce的job

      2> 把生产的Mapreduce代码及相关资源打包成jar并发布到Hadoop的集群当中并进行运行

3:hive架构

                     

 

4:hive默认情况下用derby存储元数据,所以在生产环境下一般会采用多用户的数据库进行元数据的存储,并可以读写分离和备份,一般使用主节点写,从节点读,一般使用mysql

5:hive数据仓库数据的具体存储




二:SparkSQL  和DataFrame

1:处理一切存储介质和各种格式的数据(可以扩展sparksql来读取更多类型的数据)

2:Spark SQL把数据仓库的计算速度推向了新的高度(Tungsten成熟之后会更厉害)

3:Spark SQL 推出的Dataframe可以让数据仓库直接使用机器学习,图计算等复杂算法

4:HIVE+Spark SQL+DataFrame:

     i> Hive:负责廉价的数据仓库存储

     ii>Spark Sql:负责高速的计算

     iii> DataFrame:负责复杂的数据挖掘

三: DataFrame与RDD

1:DataFrame是一个分布式的table

2:RDD和DataFrame的根本差异

    1.RDD是以Record为单位的,

    2.DataFrame包含了每一个Record的Metadata信息,也就是说DataFrame的的优化是基于列的优化,RDD是基于行的优化