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;
}

测试

测试结果




相关推荐
看海的四叔8 小时前
【SQL】SQL-管好你的字符串
大数据·数据库·hive·sql·数据分析·字符串
@小柯555m9 小时前
MySql(高级操作符--高级操作符练习(2))
数据库·sql·mysql
渣渣盟9 小时前
大数据技术栈全景图:从零到一的入门路线(深度实战版)
大数据·hadoop·python·flink·spark
Mr_linjw9 小时前
MySQL 中监控和优化慢 SQL & 索引小知识
数据库·sql·mysql
雾岛听风69110 小时前
Sql server
数据库·sql·sqlserver
橙子圆12310 小时前
Mybatis之动态sql
sql·tomcat·mybatis
hsD5mSMu511 小时前
从零开始学Flink:Flink SQL 极简入门
大数据·sql·flink
许彰午12 小时前
我手写了一个 Java 内存数据库(四):索引引擎、SQL 解析与总结
java·数据库·sql
Irene199112 小时前
SQL 有效性/作用域说明:会话级别、事务级别,语句级别
sql·级别
数据库小学妹12 小时前
锁机制(Locking):解决数据库“死锁”与“阻塞”的终极指南
数据库·sql·mysql·性能优化·学习方法