我试图弄清楚如何从查询中获取所有数据,然后逐步增加仅使用kafka连接器进行更改。原因是我想将所有数据加载到弹性搜索中,然后保持与我的kafka流同步。 目前,我首先使用mode = bulk的连接器,然后将其更改为时间戳。这很好用。
但是,如果我们想要将所有数据重新加载到Streams和ES,则意味着我们必须编写一些脚本以某种方式清除或删除kafka流和es索引数据,修改connect ini以将模式设置为bulk,重启一切,给它时间加载所有数据,然后再次修改脚本到时间戳模式,然后再次重新启动所有内容(需要这样的脚本的原因偶尔,批量更新通过etl进程纠正历史数据我们还没有有权控制,而且这个过程不会更新时间戳)
是否有人做过类似的事情并找到了更优雅的解决方案?
答案 0 :(得分:0)
如何最初从查询中获取所有数据,然后使用kafka连接器逐步增加更改。
也许这可能会对你有所帮助。例如,我有一张表:
╔════╦═════════════╦═══════════╗
║ Id ║ Name ║ Surname ║
╠════╬═════════════╬═══════════╣
║ 1 ║ Martin ║ Scorsese ║
║ 2 ║ Steven ║ Spielberg ║
║ 3 ║ Christopher ║ Nolan ║
╚════╩═════════════╩═══════════╝
在这种情况下,我将创建一个视图:
CREATE OR REPLACE VIEW EDGE_DIRECTORS AS
SELECT 0 AS EXID, ID, NAME, SURNAME
FROM DIRECTORS WHERE ID =< 2
UNION ALL
SELECT ID AS EXID, ID, NAME, SURNAME
FROM DIRECTORS WHERE ID > 2;
在kafka jdbc连接器的属性文件中,您可以使用:
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
mode=incrementing
incrementing.column.name=EXID
topic.prefix=
tasks.max=1
name=gv-jdbc-source-connector
connection.url=
table.types=VIEW
table.whitelist=EDGE_DIRECTORS
所以kafka jdbc连接器将采取措施:
Select EXID, ID, NAME, SURNAME FROM EDGE_DIRECTORS
并且将会
请注意EXID已增加。 答案 1 :(得分:0)