2

Apache NIFI“ExecuteSQL 处理器”能否以块的形式流式传输大量选择结果,例如“x”MB?

4

3 回答 3

6

ExecuteSQL 处理器可以“流式传输”大量行,因为它将数据直接流式传输到 FlowFile 内容(不会保存在内存/堆中),因此它非常节省内存。不过,此时它不会对结果进行分块。不过,有一张票https://issues.apache.org/jira/browse/NIFI-1251可以提供此类功能。

于 2015-12-07T00:52:29.840 回答
0

您还可以在 SQL 本身中指定一个限制语句(以及按 ID 排序),拉一批,获取最后一个 ID,拉所有 >max(id),重复直到完成,即

                                       Start
                                         |
    UpdateAttr: maxid--------- SQL ... $maxid:isEmpty():ifElse('', 'where id>maxid') order by id limit n
           |_____________________________|
                                         |
                                        do sth

它是由 # 个记录而不是大小 - 但知道每条记录的大约大小,你仍然可以这样做

于 2022-02-20T12:45:33.843 回答
0

您现在可以使用通过“每个流文件的最大行数”属性支持分块的 QueryDatabaseTable 处理器。

于 2017-03-14T07:57:42.383 回答