SparkSQL开发工具类

本文主要总结了SparkSQL在开发过程中常用的工具类,包括数据读写、查询优化及性能提升等方面的关键功能,旨在帮助开发者更高效地利用SparkSQL进行大数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SparkSQL开发工具类总结

 


import java.text.SimpleDateFormat
import java.util.{Calendar, Date, Properties}

import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}


object SparkUtil {
  /**
    * 获取sparkSession
    *
    * @return
    */
  def getSparkSession: SparkSession = {
    val sparkSession = SparkSession.builder().master("yarn").getOrCreate()
    sparkSession
  }

  /**
    * 从Mysql中读表并创建临时表
    *
    * @param sparkSession
    * @param table
    */
  def readFromMysql(sparkSession: SparkSession, table: String): DataFrame = {
    val username = getProperty("/jdbc.properties", "jdbc.username")
    val password = getProperty("/jdbc.properties", "jdbc.password")
    val url = getProperty("/jdbc.properties", "jdbc.url")
    val properties = new Properties()

    properties.setProperty("user", username)
    properties.setProperty("password", password)
    sparkSession.read.jdbc(url, table, properties)
  }

  /**
    * @param sparkSession
### DataHub 集成 Spark SQL 的使用方法 DataHub 是现代数据栈中的元数据管理平台,能够帮助用户自动化生成 Spark 作业的数据血缘关系。以下是其与 Spark SQL 集成的具体实现方式: #### 初始化 Spark Session 并加载 DataHub 扩展 为了使 DataHub 能够捕获 Spark SQL 中的操作并自动生成数据血缘关系,需要在初始化 `SparkSession` 时引入特定的 JAR 文件以及配置监听器。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("spark://spark-master:7077") \ .appName("spark-sql-lineage-test") \ .config("spark.jars", "/opt/sparkjob/jars/datahub-spark-lineage-0.8.26.jar") \ .config("spark.extraListeners", "datahub.spark.DatahubSparkListener") \ .config("spark.datahub.rest.server", "http://localhost:8080") \ .enableHiveSupport() \ .getOrCreate() ``` 上述代码片段展示了如何通过 `.config()` 方法设置必要的参数来启用 DataHub 数据血缘功能[^2]。其中: - **`spark.jars`**: 指定包含 DataHub Spark Listener 实现逻辑的外部依赖库路径。 - **`spark.extraListeners`**: 注册用于捕捉事件并将这些信息发送到 DataHub 的监听器类名。 - **`spark.datahub.rest.server`**: 定义目标 REST API 地址以便将收集的信息提交给远程服务器处理。 当执行基于此会话对象创建的各种 DataFrame 或 Dataset 查询操作时,所有涉及表之间的关联都会被记录下来形成完整的流程图谱供后续审计或者优化参考之用。 --- ### DataHub 和 Spark SQL 功能上的主要区别 尽管两者都围绕着大规模结构化数据分析展开工作,但从职责范围来看存在显著差异: | 特性 | Spark SQL | DataHub | |-------------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | 主要用途 | 提供分布式计算框架支持SQL查询语句解析执行等功能 | 构建企业级统一视图展示各类资产间相互依存状况 | | 技术定位 | 属于底层引擎层负责实际运算任务调度完成具体业务需求 | 处于上层应用服务领域侧重治理方面比如分类标注敏感度等级划分权限控制等方面 | | 是否参与核心算法 | 直接参与到ETL过程之中包括但不限于join聚合排序等复杂变换 | 不介入任何具体的数值型转换仅作为旁观者角色采集日志消息传递至其他组件进行进一步加工 | 因此可以看出虽然二者可以紧密配合共同发挥作用但是它们各自扮演的角色完全不同不可互相替代[^1]. --- ### 总结说明 综上所述,在项目开发过程中如果希望既享受到高效便捷的大规模并行处理能力同时也渴望获得清晰明了的技术架构文档那么就可以考虑把这两个工具结合起来使用从而达到事半功倍的效果.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值