写在前面:
一转眼的时间,2024年了,翻看了一下博客首页,已有8年的码领,自从去年开启博客关注才能预览,至今已有1500个粉丝,比其他短视频平台的粉丝还要多,经年累月,8年一瞬,在码代码的道路上越来越不快乐,为何不快乐,因为寻觅不到快乐的源泉。
————- “何以解忧,唯有暴富”
需求
开发一个系统,主要是将数仓中治理完用于检索的数据灌入Elasticsearch中,一般情况,开源的一些系统都可以满足情况,包括自己编写代码实现。系统开发主要用于数据产品的产品化,需要开发界面和后续开发完成软著的申请
设计思路
使用spark sql进行处理,之前也调研了抽象语法树生成代码的方式,也能实现功能,相对于sparksql方式稍显复杂,spark sql只需要将sql 字符串传入,生成临时试图,多表关联也可以通过参数传入,多表join将sql传入,并将需要用到的配置以参数方式传入,这样jar报的编码只需要对应一个模板主类入口,其他的参数从前端页面上配置传入。
主要代码
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包,系统前端页面参数通过服务端传入并提交执行在大数据集群节点
原文地址:https://blog.csdn.net/dengxt/article/details/135642961
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_59584.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!