用脚手架如何搭建项目做网站,大气绿色网站模板,什么网站访问量,嘉兴中小企业网站建设Spark数仓建表 1、Spark on Hive与Hive on Spark2、Spark数仓建表相关问题 1、Spark on Hive与Hive on Spark 1.1、Hive on Spark
Hive默认使用MapReduce作为执行引擎#xff0c;即Hive on MapReduce。实际上#xff0c;Hive还可以使用Tez或Spark作为其执行引擎#xff0c;… Spark数仓建表 1、Spark on Hive与Hive on Spark2、Spark数仓建表相关问题 1、Spark on Hive与Hive on Spark 1.1、Hive on Spark
Hive默认使用MapReduce作为执行引擎即Hive on MapReduce。实际上Hive还可以使用Tez或Spark作为其执行引擎分别为Hive on Tez和Hive on Spark
由于MapReduce的中间计算均需要写入磁盘Spark则是存入内存所以总体来讲Spark比MapReduce效率高很多因此企业也较少使用MapReduce
Hive on Spark是Hive既作为存储又负责SQL的编译、解析和优化Spark只负责执行。这里Hive的执行引擎换成了Spark不再是MapReduce
1.2、Spark on Hive
Spark on Hive是Hive只作为存储角色Spark负责SQL的编译、解析、优化和执行。这里可以理解为Spark通过SparkSQL使用Hive语法操作Hive表底层运行的仍然是Spark RDD
具体步骤如下 执行SparkSQL加载Hive的配置文件获取Hive的元数据信息 根据获取到的Hive元数据信息得到Hive表的数据 通过SparkSQL来操作Hive表的数据
也就是说Spark使用Hive来提供表的Metadata信息
2、Spark数仓建表相关问题 前些天在基于Spark数仓建表时报了如下错误
Can not create the managed table(db.table). The associated location(hdfs://date/warehouse/tablespace/external/hive/db/table) already exists.报错信息显示不能创建管理表外表已存在…
不得不说这个报错还真有点奇怪…
事情的起因也很简单由于我们使用的是Spark数仓即Spark on Hive模式相较于HiveSpark建表默认为外External表而Hive是管理Managed表
由于基于Spark on Hive因此Spark在获取Hive表的数据时会先去获取Hive的元数据信息因此Spark建表会先根据元数据信息校验管理表是否存在如果已经存在一个相同的管理表Spark建表则会报如上异常
解决的方案也很简单删除已存在的不必要的管理表然后重新建表或者创建管理表不存在的Spark表即可 参考文章 https://baijiahao.baidu.com/s?id1757731374695957147wfrspiderforpc