Spark on Hive 和 Hive on Spark的区别与实现

1)Spark on Hive

Spark on Hive 是Hive只作为存储角色,Spark负责sql解析优化,执行。这里可以理解为Spark 通过Spark SQL 使用Hive 语句操作Hive表 ,底层运行的还是 Spark RDD。具体步骤如下:

  • 通过SparkSQL,加载Hive的配置文件,获取到Hive的元数据信息;
  • 获取到Hive的元数据信息之后可以拿到Hive表的数据;
  • 通过SparkSQL来操作Hive表中的数据。

【总结】Spark使用Hive来提供表的metadata信息。

2)Hive on Spark

Hive on Spark是Hive既作为存储又负责sql的解析优化,Spark负责执行。这里Hive的执行引擎变成了Spark,不再是MR,这个要实现比Spark on Hive麻烦很多, 必须重新编译你的spark和导入jar包,不过目前大部分使用的确实是spark on hive

Hive默认使用MapReduce作为执行引擎,即Hive on MapReduce。实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark。由于MapReduce中间计算均需要写入磁盘,而Spark是放在内存中,所以总体来讲Spark比MapReduce快很多。因此,Hive on Spark也会比Hive on MapReduce快。由于Hive on MapReduce的缺陷,所以企业里基本上很少使用了。

【总结】hive on spark大体与spark on hive结构类似

你可能感兴趣的:(大数据从入门到精通,big,data)