Hive on Spark用的是Spark执行引擎,而不是MapReduce
处理hive元数据的不再是map和reduce工程而是通过spark的rdd就可以充分利用Spark的快速执行能力来缩短HiveQL的响应时间
配置Hive on Spark
将编译后的spark下的lib下的 spark-assembly-*.jar 拷贝到hive的lib下
* 在hive-site.xml 添加如下配置
<!--修改hive的执行引擎为spark-->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<!--在hdfs上hive数据存放目录,启动hadoop后需要在hdfs上手动创建 -->
. <property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--默认 metastore 在本地,添加配置改为非本地-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>-->
<!--记录 Spark事件,用于应用程序在完成后重构 webUI-->
<property>
<name>spark.eventLog.enabled</name>
<value>true</value>
</property>
<!—hdfs目录存在-->
<property>
<name>spark.eventLog.dir</name>
<value>hdfs:///hive_on_sparklogs</value>
</property>
<!--每个executor的内存大小-->
<property>
<name>spark.executor.memory</name>
<value>512m</value>
</property>
<!--序列化对象-->
<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>
<!-- 先上传spark-assembly-1.6.1-hadoop2.6.0.jar包到hdfs上,并配置,避免任务运行时不需要下载-->
<property>
<name>spark.yarn.jar</name>
<value>hdfs://itcast01:9000/spark-assembly-1.6.1-hadoop2.6.0.jar</value>
</property>