当前位置: 首页 > news >正文

Spark/Hive

Spark/Hive

  • Hive 原理
  • Spark with Hive
    • SparkSession + Hive Metastore
    • spark-sql CLI + Hive Metastore
    • Beeline + Spark Thrift Server
  • Hive on Spark

  • Hive 擅长元数据管理
  • Spark 擅长高效的分布式计算

Spark + Hive 集成 :

  • Hive on Spark : Hive 用 Spark 作为底层的计算引擎时
  • Spark with Hive : Spark 把 Hive 当元信息的管理工具

Hive 原理

Hive架构 , 可插拔的第 三方独立组件 :

  • User Interface 提供 SQL 接入服务
  • CLI 与 Web Interface 在本地接收 SQL 查询语句
  • Hive Server 2 提供 JDBC/ODBC 客户端连接,从远程提交 SQL 查询请求

在这里插入图片描述

SQL 查询的工作过程 :

  1. 收到 SQL 后,Driver 先用 Parser ,将查询语句转化为 AST(Abstract Syntax Tree,查询语法树)
  2. Hive 从 Hive Metastore 拿表的元信息,如 : 表名、列名、字段类型、数据文件存储路径、文件格式
  3. Planner 根据 AST 生成执行计划
  4. Optimizer 优化执行计划
  5. Execution 提交执行计划

Spark with Hive

Spark with Hive 集成方式 :

  • 创建 SparkSession,访问 Hive Metastore
  • 通过 spark-sql CLI,访问本地 Hive Metastore
  • 通过 Beeline,访问 Spark Thrift Server

SparkSession + Hive Metastore

启动 Hive Metastore

hive --service metastore

Spark 拿 Metastore 访问地址的两种办法 :

  • 创建 SparkSession 时,通过 config 指定 hive.metastore.uris
  • 把Hive的 hive-site.xml 拷到 Spark 的 conf 下

spark-shell 下写代码 :

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.DataFrameval hiveHost: String = _// 创建SparkSession实例
val spark = SparkSession.builder().config("hive.metastore.uris", s"thrift://hiveHost:9083").enableHiveSupport().getOrCreate()// 读取Hive表,创建DataFrame
val df: DataFrame = spark.sql(“select * from salaries”)
df.show/** 结果打印
+---+------+
| id|salary|
+---+------+
| 1| 26000|
| 2| 30000|
| 4| 25000|
| 3| 20000|
+---+------+
*/

SparkSession + Hive Metastore 集成方式 :

  • Spark 只涉及 Hive 的 Metastore

在这里插入图片描述

spark-sql CLI + Hive Metastore

spark-sql CLI 与 Hive Metastore 要在同个节点

  • spark-sql CLI 只能访问 本地 Hive Metastore

Beeline + Spark Thrift Server

用 Beeline 客户端,连接 Spark Thrift Server,从而完成 Hive 表的访问与处理

Hive Server 2 (Hive Thrift Server 2) 采用 Thrift RPC 协议框架

Beeline + Spark Thrift Server 集成 :

  • Spark Thrift Server 与 Hive Server 2 的实现逻辑一样。最大区别:SQL 查询接入后的解析、规划、优化与执行

在这里插入图片描述

启动 Spark Thrift Server :

$SPARK_HOME/sbin/start-thriftserver.sh

Spark Thrift Server 启动后,在任意节点上通过 Beeline 就能访问该服务

beeline -u "jdbc:hive2://hostname:10000"

Hive on Spark

Hive on Spark :Hive 用 Spark 作为分布式执行引擎

  • SQL 语句的解析、规划与优化都由 Hive 的 Driver 完成
  • Hive on Spark 衔接的部分是 Spark Core

指定 Spark 执行引擎

set hive.execution.engine=spark
http://www.lryc.cn/news/33980.html

相关文章:

  • HashMap底层的实现原理(JDK8)
  • 操作系统-整理
  • 系统换行符的思考
  • Wwise集成到unreal
  • 前端秘籍之=>八股文经卷=>(原生Js篇)【持续更新中...】
  • 【Python安装配置教程】
  • Spring-Retry失败重试
  • 【目标检测 DETR】通俗理解 End-to-End Object Detection with Transformers,值得一品。
  • 项目ER图和资料
  • 剑指 Offer 20. 表示数值的字符串(java+python)
  • 程序员的逆向思维
  • 吐血整理学习方法,2年多功能测试成功进阶自动化测试,月薪23k+......
  • mysql慢查询:pt-query-digest 分析
  • git的使用整合
  • XCPC第九站———背包问题!
  • 【软考 系统架构设计师】论文范文④ 论基于构件的软件开发
  • spring-integration-redis中分布式锁RedisLockRegistry的使用
  • 城市通电(prim算法)
  • 【动态规划】
  • 秒懂算法 | DP概述和常见DP面试题
  • 【C++提高编程】C++全栈体系(二十五)
  • 【云原生】k8s核心技术—集群安全机制 Ingress Helm 持久化存储-20230222
  • 【Linux】实现简易的Shell命令行解释器
  • 再获认可!腾讯安全NDR获Forrester权威推荐
  • 代码审计之旅之百家CMS
  • ONLYOFFICE中利用chatGPT帮助我们策划一场生日派对
  • Java面试题-线程(一)
  • 一篇普通的bug日志——bug的尽头是next吗?
  • Vue 3 第八章:Watch侦听器
  • GlassFish的安装与使用