我正在尝试使用ExecuteSQL处理器从mysql(just like cursor
)批量获取数据。我的ExecuteSQL属性是:
Max Rows Per Flow File : 100
Output Batch Size : 10
但是,除非处理器执行并获取所有数据,否则它会卡住。我需要在此处模拟类似场景的光标。
就像mysql发送一些数据说100一样,它会从中创建一个流文件,而当创建10个这样的流文件时,处理器会将其发送到下一行进行处理。
答案 0 :(得分:0)
根据NiFi-1251 Jira,从NiFi-1.8开始
Ashwins-MacBook-Pro:blockchain ashwin$ python test.py
2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)]
Expected:
Ashwins-MacBook-Pro:blockchain ashwin$ python test.py
3.7 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)]
,然后是 ExecuteSQL 处理器将 发送流文件 以进行进一步处理。如果您使用的是 first 100 rows
版本,那么我们需要等到从数据库中提取所有行。
(或)
另一个解决方法是
使用 < NiFi-1.8
处理器生成sql select查询的行页面。
使用 GenerateTableFetch
处理器执行页面sql查询。
流量:
ExecuteSql
请参阅this链接,以获取有关GenerateTableFetch处理器的更多详细信息。