3

我正在尝试使用 ExecuteSQL 处理器从 oracle 数据库中获取数据。我有一些查询,例如假设我的 oracle 数据库中有 15 条记录。在这里,当我运行 ExecuteSQL 处理器时,它将作为流式进程连续运行并将整个记录存储为HDFS 中的单个文件并重复执行相同操作。因此,hdfs 位置中将存在许多文件,这些文件将从 oracle db 中获取已获取的记录,并且这些文件包含相同的数据。如何使该处理器在这样的环境中运行它必须从oracle db一次获取所有数据并存储为单个文件的方式,并且当有新记录插入数据库时​​,它必须将这些数据摄取到hdfs位置?

4

1 回答 1

3

看一下 QueryDatabaseTable 处理器:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.QueryDatabaseTable/index.html

您将需要告诉该处理器一个或多个用于跟踪新记录的列,这是“最大值列”属性。如果您的表有一个单一的 id 列,您可以使用它,并且每次运行它都会跟踪看到的最后一个 id,并在下一次执行时从那里开始。

于 2016-06-08T12:45:16.483 回答