前言
Spark on Hive : 写spark sql,要查询的数据在hive表中
Hive on Spark : 写Hive SQL,最后通过spark引擎运行在集群中 提高Hive SQL的执行速度,替换计算引擎
hive默认包含的计算引擎(mr、tez、spark)
准备工作:在hive中创建一张表
create table t_user(
id int,
name string,
age int
)
row format delimited
fields terminated by '\t';
load data local inpath '/opt/user.log' into table t_user;
在SparkSQL中访问 Hive
步骤1: 修改hive-site.xml配置文件
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop10:9083</value>
</property>
步骤2:启动Metastore
nohup hive --service metastore >> /root/hive2.log 2>&1 &
如果未配置Metastore,在hive的配置文件中hive-site.xml添加以下代码问
配置文件所在路径参考(/opt/installs/hive3.1.2/conf/hive-site.xml)
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop11:9083</value>
</property>
步骤3: 编写代码(本地运行)集群上只需将代码中的“.master("local[*]") \”去掉
创建SparkSession的时候,记得添加.enableHiveSupport()
from pyspark.sql import SparkSession
if __name__ == '__main__':
spark = SparkSession.builder \
.config('hive.metastore.uris','thrift://hadoop11:9083') \
.config('spark.sql.warehouse.dir','hdfs://hadoop12:8020/user/hive/warehouse') \
.master("local[*]") \
.appName('测试spark连接hive').enableHiveSupport().getOrCreate()
# spark.sql('use ods')
spark.sql('select * from ods.t_user').show()
spark.stop()