【问题标题】:How to use putSQL in apache nifi如何在 apache nifi 中使用 putSQL
【发布时间】:2021-11-26 21:48:15
【问题描述】:

我是数据warehousingapache nifi 的初学者。我试图将 Mysql 表数据放入 nifi,然后想将该数据放入另一个 mysql 数据库表中,我成功地从数据库表中获取数据,并且我还可以使用putFile 处理器将该数据打印到文件中。

但现在我想将排队的数据存储到 mysql 数据库表中,我知道有 putSQL 处理器,但它不适合我。 谁能告诉我如何正确地做到这一点。

这是我的流程截图

PutSQL 配置-

我将数据从 Avro 转换为 JSON,然后将 JSON 转换为 SQL,以防万一,但这也行不通。

【问题讨论】:

  • Not working 是很模糊的说法,您在执行PutSQL 时是否遇到任何错误或数据未正确加载?
  • 我没有使用 putSQL 获取保存在数据库中的数据。
  • 能分享一下PutSQL的配置吗?
  • @VikramsinhShinde 我已经添加了屏幕截图。

标签: etl apache-nifi data-warehouse


【解决方案1】:

使用PutDatabaseRecord 并删除Convert* 处理器。

来自 nifi 文档:

PutDatabaseRecord 处理器使用指定的 RecordReader 来输入 来自传入流文件的(可能是多个)记录。这些记录 被转换为 SQL 语句并作为单个事务执行。 如果发生任何错误,流文件将被路由到失败或重试,并且 如果记录传输成功,则传入流文件为 成功。处理器执行的语句类型是 通过 Statement Type 属性指定,该属性接受一些 硬编码值,例如 INSERT、UPDATE 和 DELETE,以及“使用 statement.type 属性',这会导致处理器获取 来自流文件属性的语句类型。重要提示:如果声明 类型为 UPDATE,则传入记录不得更改值 的主键(或用户指定的更新键)。如果这样的记录 遇到,发给数据库的UPDATE语句可能会做 什么都没有(如果没有具有新主键值的现有记录 发现),或可能无意中损坏现有数据(通过更改 主键的新值存在的记录)。

这应该更高效、更简洁。

【讨论】:

  • 所以基本上我可以将数据流从 QueryDatabaseTableRecord 连接到 PutDatabaseRecord ?
  • @Amara。是的。当然模式应该匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多