- 1. Spark SQL整合Hive
- 2. SparkSQL与Hive共用元数据
- 2.1 开启Hive元数据服务
- 2.1.1 修改hive配置
- 2.1.2 启动hive元数据服务
- 2.2 拷贝hive-site.xml和mysql驱动
- 2.3 启动SparkSQL
- 2.4 测试
为什么要进行整合?
由于hive原生是基于MapReduce的,导致其查询耗时较长。而SparkSQL底层是spark core(RDD),在内存中计算数据,且是粗粒度资源调度。
为了保留Hive的架构解决方案,并优化查询速度,采用SparkSql与hive整合(spark on hive),通过SparkSQL读取hive中表的元数据,把HiveHQL底层采用MapReduce处理任务导致性能慢的特点,改为更加强大的Spark core引擎来进行相应的计算处理。
环境搭建准备 ( 搭建步骤前面写过 )
- 搭建hadoop集群
- 安装hive构建数据仓库
- 安装spark集群
SparkSQL整合hive
Spark SQL的其中一个分支就是Spark on Hive,就是使用Hive中HQL的解析逻辑、执行计划翻译、执行计划优化等逻辑,可认为将物理执行Task从MR作业替换成了Spark作业。
Spark SQL整合hive就是获取hive表中的元数据信息(在mysql中),然后通过Spark SQL来 *** 作数据。
整合步骤:
在hive的 hive-site.xml 修改一行配置,增加了这一行配置之后,以后在使用hive之前都 需要先启动元数据服务
开启hive元数据服务的目的: 是让spark sql 可以获取到hive的元数据
2.1.2 启动hive元数据服务hive.metastore.uris thrift://master:9083
启动Hive元数据服务,并验证Hive是否可用
启动命令:
nohup hive --service metastore >> metastore.log 2>&1 &
验证hive是否可用:hive
2.2 拷贝hive-site.xml和mysql驱动将hive-site.xml 复制到spark conf目录下
cp hive-site.xml /usr/local/soft/spark-2.4.5/conf/
将 mysql 驱动包复制到saprk jars目录下
cp mysql-connector-java-5.1.17.jar /usr/local/soft/spark-2.4.5/jars/
使用yarn-client模式启动,不能使用yarn-cluster模式
使用命令启动:spark-sql --master yarn-client
1、在spark-sql中设置运行参数:set spark.sql.shuffle.partitions=2;
SparkSQL默认使用的并行度是200个,可以根据数据量的大小进行调。由于student库中的student表数据量较小,将之调整为2
2、统计每个班级的人数
select clazz,count(1) from student group by clazz;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)