从数据库中获取大数据集并将其发送到Kafka

问题描述 投票:0回答:2

我有2个表,可以说Emp和Courses表。 Emp有3万行,课程有10万行。

[一名员工可以开设许多课程,即一对多关系。我需要从表中获取记录并发送给Kafka。

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

我不想立即加载内存中的所有行,因为这可能会导致内存超出异常错误。

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

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

FYI例如。在EMP表中,我的emp_id = 1,在Courses表中有5个对应的行。因此,我将把这5行转换为1个Java对象,然后转换为1个Json对象。

spring spring-boot spring-kafka kafka-producer-api
2个回答
0
投票

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

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.