【问题标题】:Fetch large data set from Database and Send it to Kafka从数据库中获取大型数据集并将其发送到 Kafka
【发布时间】:2020-09-22 16:06:17
【问题描述】:

我有 2 个表,比如说 Emp 和 Courses 表。 Emp 有 30k 行,Courses 有 100k 行。

1 名员工可以有很多课程。即一对多的关系。我需要从表中获取记录并发送到 Kafka。

Data From Table-----> Convert To JSON --->Send To KAFKA

我不想一次加载内存中的所有行,因为它会导致内存不足异常错误。

如何实现呢?我可能会使用 JDBCTEMPLATE 或 SPRING DATA JPA?

我正在使用 SPRING BOOT 2+ 版本和 JAVA 8

仅供参考 例如。在 EMP 表中,我有 emp_id =1,它在 Courses 表中有 5 个对应的行。 所以我会将这 5 行转换为 1 个 Java 对象,然后是 1 个 Json 对象。

【问题讨论】:

    标签: spring spring-boot spring-kafka kafka-producer-api


    【解决方案1】:

    Spring Data 提供了以非阻塞方式连续加载大量数据的功能。这允许您在某些数据仍在获取时对结果进行所有您想要的处理。为此,您只需返回 @Entity 类的 Stream :

    public interface EmployeeRepository extends JpaRepository<EmployeeEntity, String> {
        Stream<EmployeeEntity> findAllBy();
    }
    

    【讨论】:

    • setfetchsize() 对我有帮助吗
    【解决方案2】:

    将数据从数据库导入 Apache Kafka 是一个非常常见的用例。 Kafka Connect 允许您以可靠、可扩展和容错的方式将数据从 Kafka 传输到 Kafka。具体来说,JDBC source connector 做了您想做的事情,如果您构建自定义解决方案,您最终可能会部分实现连接器已经在做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 2021-01-27
      • 2020-09-15
      • 1970-01-01
      • 2017-08-16
      • 2020-08-19
      相关资源
      最近更新 更多