将事件直接从kafka存储到数据库中吗?何时或为何使用S3 / HDFS?

问题描述

我正在学习事件流/事件管道。

我知道普通(简单)管道的外观,让我们说这样的话,在互联网上很容易找到它:



DECLARE @sql nvarchar(MAX),@ColumnName sysname = N'YourColumnName',@CRLF nchar(2) = CHAR(13) + CHAR(10);

DECLARE @Delimiter nvarchar(30) = @CRLF + N'UNION ALL' + @CRLF

SET @sql = (SELECT STRING_AGG(N'SELECT N' + QUOTENAME(s.[name],'''') + N' AS SchemaName,N' + QUOTENAME(t.[name],'''') + N' AS TableName,' + QUOTENAME(c.[name]) + N' FROM ' + QUOTENAME(s.[name]) + N'.' + QUOTENAME(t.[name]),@Delimiter) WITHIN GROUP (ORDER BY t.object_id)
            FROM sys.schemas s
                 JOIN sys.tables t ON s.schema_id = t.schema_id
                 JOIN sys.columns c ON t.object_id = c.object_id
            WHERE c.[name] = @ColumnName)

EXEC sys.sp_executesql @sql;

我的问题是下一个,为什么我看不到这种架构?

Kafka-> S3/HDFS/... -> database/datawarehouse

我知道为什么在我的公司中我们使用S3来存储事件,然后再去数据库,但是我只想得到一些其他意见或观点,因为我在具有事件流管道的公司中工作不多 谢谢!

解决方法

这是我创建的架构图之一:

enter image description here

注意:在这里,我将数据从Kafka推送到MongoDB,Hive和HBase

,

Kafka具有连接器,如果您只是想将数据从Kafka流式传输到其他存储库(接收器连接器),反之亦然(源连接器),则应利用该连接器。

在此处查看文档。

https://docs.confluent.io/current/connect/managing/connectors.html

https://kafka.apache.org/documentation.html#connect