spark sql实践开发后端引擎

写在前面:

一转眼的时间,2024年了,翻看了一下博客首页,已有8年的码领,自从去年开启博客关注才能预览,至今已有1500个粉丝,比其他短视频平台的粉丝还要多,经年累月,8年一瞬,在码代码的道路上越来越不快乐,为何不快乐,因为寻觅不到快乐的源泉。

------------- "何以解忧,唯有暴富"

需求

开发一个系统,主要是将数仓中治理完用于检索的数据灌入​Elasticsearch​中,一般情况,开源的一些系统都可以满足情况,包括自己编写代码实现。系统开发主要用于数据产品的产品化,需要开发界面和后续开发完成软著的申请

设计思路

使用spark sql进行处理,之前也调研了抽象语法树生成代码的方式,也能实现功能,相对于sparksql方式稍显复杂,spark sql只需要将sql 字符串传入,生成临时试图,多表关联也可以通过参数传入,多表join将sql传入,并将需要用到的配置以参数方式传入,这样jar报的编码只需要对应一个模板主类入口,其他的参数从前端页面上配置传入。

主要代码

Scala 复制代码
object DataToEs {
  def main(args: Array[String]): Unit = {

    val table_name = args(0)
    val filter_expr = args(1)
    val primary_query = args(2)
    val patient_join = args(3)
    val where_expr = args(4)
    val sql_str = args(5)
    val es_index = args(6)

    val spark: SparkSession = SparkSession....

    val df: DataFrame = spark.read.jdbc(JdbcConfig.URL, SchemaConst.schemaName + table_name, JdbcConfig.getProperties)

   
    df.createOrReplaceTempView(table_name)

    val sql_df: DataFrame = spark.sql(sql_str)
    sql_df.printSchema()

    sql_df.show()
    val es_df_no_null = sql_df.filter(where_expr)
    es_df_no_null.saveToEs(es_index, EsConfig.es_index_routing_patient_id_config)
    spark.stop()
  }
}

多表join 多几个 df.createOrReplaceTempView(table_name) ,将代码打成jar包,系统前端页面参数通过服务端传入并提交执行在大数据集群节点

相关推荐
Alex艾力的IT数字空间4 小时前
在 Kylin(麒麟)操作系统上搭建 Docker 环境
大数据·运维·缓存·docker·容器·负载均衡·kylin
智能化咨询6 小时前
(163页PPT)某著名企业K3生产制造售前营销指导方案P164(附下载方式)
大数据·人工智能
我叫黑大帅7 小时前
如何排查 MySQL 慢查询
后端·sql·面试
数厘9 小时前
2.21 sql聚合函数的特性与避坑指南(NULL值处理、DISTINCT在聚合函数中的应用)
数据库·sql·oracle
陈老老老板10 小时前
Bright Data Web Scraper 实战:构建 eBay Web Scraping 自动化 Skill(2026)
大数据·人工智能·自动化
李可以量化10 小时前
【2026 量化工具选型】通达信 TdxQuant vs 迅投 QMT/miniQMT 深度对比:新手该怎么选?
大数据·人工智能·区块链·通达信·qmt·量化 qmt ptrade
互联科技报10 小时前
零售数字化:高准确率客流分析系统优质推荐
大数据·人工智能
张艾拉 Fun AI Everyday11 小时前
苹果的 AI 战略到底是什么?
大数据·人工智能
黎阳之光11 小时前
去标签化无感定位技术突破,黎阳之光重构空间定位技术路径
大数据·人工智能·算法·安全·数字孪生
天辛大师12 小时前
江南居士林:天辛大师浅谈如何用AI分辨明前茶还是雨前茶
大数据·人工智能·决策树·随机森林·启发式算法