spark3.0教程:为什么Spark读取Hive数据、读取Hive的方式

为什么Spark读取Hive数据

Hive主要用于 大规模数据的 存储,也可以查询分析,但性能较差

Spark主要用于 大规模数据的 查询分析

Hive 定位

Hive的定位是 数据仓库,主要是以下功能:

  • 负责数据的存储(底层是 HDFS)
  • 通过 SQL查询分析数据,降低技术门槛。底层计算使用的是MapReduce,由于需要繁的磁盘IO,其计算 性能很差

Hive一般用来处理结构化数据

Spark 定位

spark是一个通用的处理大规模数据的 分析引擎,不负责数据存储。

Spark基于 内存计算,凭借着DAG和RDD特性(保证中间数据如果丢失可以重新计算恢复),可以将计算的中间结果以RDD的形式保存在内存中,而不需要频繁的磁盘IO,计算性能远高于Hadoop的MapReduce

分析处理数据的方式,可以使用SQL,也可以使用java,scala, python、R等api

分析处理数据的模式,既可以是 批处理,也可以是 流处理,主要是 批处理

Spark读取Hive数据的方法

spark读取hive数据,有两种方式

  • Spark on Hive
  • Spark JDBC

Spark on Hive

将Spark构建在Hive之上,Spark需要用到Hive:

  • 通过SparkSQL,加载Hive的配置文件,获取到Hive的 metastore信息,进而获得metadata;
  • SparkSQL 获取到metadata之后就可以去访问Hive的所有表的数据(在 HDFS 上)
  • 接下来就可以通过SparkSQL来操作Hive表中存储的数据(查询速度快)

这种方式的特点是 效率高、数据吞吐量大、使用spark操作起来更加友好

Spark JDBC

通过 Spark JDBC 的方式访问,通过连接 hiveserver2 的方式获取数据,这样大部分 数据计算压力在 Hive上,Hive底层用 MapReduce ,会将中间结果保存到 HDFS 上,查询慢


原文出处:/show_1IX3DQddYLMK.html