spark sql 与scala混合开发实现数据入mongodb

目录

概述

在此提供 spark sql 与scala混合开发实现数据入mongodb 相关思路

将部分重复性功能进行通用化(使用SQL与Scala混合开发模式)。

相关组件 hadoop 3.3.6 spark 3.4.2 kyuubi 1.8.0 基于上术组件开发

资源

如遇资源或代码方面问题,可以下载以下内容解决。

资源 下载地址
相关jar包 地址
关键代码 地址

解决问题

进行数据分析时,会出现上百个字段,几十万的数据量,导致前端拉取慢,而且浏览器老崩。

所以需要写入快,能分页,支持索引,为后续功能做扩展,也可能出现,数据过千万的情况,考虑方方面面,最终使用 spark sqlScala 混合开发,完成前端传SQL,后端将 SQLScala 组合写入 Mongodb,提交给 Spark 执行即可解决这一类问题

效果

环境配置

相关包

启动的spark环境中也有对应的包

关键代码

java 复制代码
public static boolean exportMongodb(Kyuubi kyuubi, String mongodbUrl, Integer repartition, String database, String collection, Integer maxBatchSize) throws SQLException {
	。。。
    StringBuilder sb = new StringBuilder();
    sb.append("val df=spark.sql(\"").append(kyuubi.getSql()).append("\"").append(");")
            .append("df");
    if (Objects.nonNull(repartition) && repartition > 0) {
        sb.append(".repartition(").append(repartition).append(")");
    }
    sb.append(".write.mode(\"overwrite\")");
    sb.append(".format(\"mongodb\")");
    sb.append(".option(\"connection.uri\", ").append("\"").append(mongodbUrl).append("\")");
    sb.append(".option(\"database\", ").append("\"").append(database).append("\")");
    sb.append(".option(\"collection\", ").append("\"").append(collection).append("\")");
    sb.append(".option(\"ordered\", \"false\")");
    sb.append(".option(\"maxBatchSize\", ").append("\"").append(maxBatchSize).append("\")");
    sb.append(".save();");
    System.out.println(sb);
	。。。
    return true;
}

测试

测试结果




相关推荐
紫无之紫12 小时前
SQL性能调优经验总结
数据库·sql·性能调优
小云数据库服务专线12 小时前
GaussDB in的用法
数据库·sql·gaussdb
鲁子狄21 小时前
[笔记] 动态 SQL 查询技术解析:构建灵活高效的企业级数据访问层
java·spring boot·笔记·sql·mysql·mybatis
中文很快乐21 小时前
postgreSQL的sql语句
数据库·sql·postgresql
线条11 天前
Spark 单机模式安装与测试全攻略
大数据·分布式·spark
渣渣盟1 天前
Flink数据流高效写入MySQL实战
mysql·flink·scala
Kay_Liang2 天前
MySQL SQL语句精要:DDL、DML与DCL的深度探究
开发语言·数据库·sql·mysql·database
float_六七2 天前
SQL预编译:安全高效数据库操作的关键
数据库·sql·安全
写代码也要符合基本法2 天前
Oracle SQL - 使用行转列PIVOT减少表重复扫描(实例)
数据库·sql·oracle
开开心心就好2 天前
专业PPT图片提取工具,操作简单
javascript·电脑·powerpoint·scala·erlang·perl·myeclipse