NiFi中SelectHiveQL处理器默认线程及并发任务异常问题咨询
NiFi SelectHiveQL 线程数相关问题详解
让我逐个拆解你的问题,都是NiFi里常见的配置疑惑,很有代表性:
1. SelectHiveQL处理器的默认执行线程数
SelectHiveQL的默认并发任务数(也就是调度选项卡中的Concurrent Tasks)是1。这里的并发任务数指的是处理器同时处理FlowFile的并行任务量,是该处理器出厂时的默认配置。
2. NiFi处理器的通用默认线程数
绝大多数NiFi官方标准处理器的通用默认并发任务数都是1。这个值是可以在调度选项卡按需调整的,但默认情况下都是单线程处理FlowFile。
3. 并发任务设为0仍有多个线程解析SQL的原因
这个情况其实是因为调度里的Concurrent Tasks和处理器内部SQL解析用的线程根本不是一回事:
- 当你把
Concurrent Tasks设为0时,只是禁止了处理器同时并行处理多个FlowFile的任务,但SelectHiveQL在解析SQL的时候,可能会用到NiFi框架内置的线程池,或者Hive JDBC驱动自己的线程池来完成SQL语法校验、元数据查询(比如获取表结构、分区信息)这类操作。 - 举个实际例子:Hive的JDBC驱动在处理复杂SQL时,会启动额外线程去拉取Hive metastore的元数据,这些线程完全不受NiFi处理器的
Concurrent Tasks配置管控。 - 另外,NiFi框架本身也有一些后台守护线程(比如监控处理器状态、维护队列的线程),这些线程的日志也可能会被你误认为是SQL解析的线程。
如果想搞清楚这些线程的来源,可以重点看日志里的线程名称,通常会带有HiveConnectionPool、NiFi Framework Thread这类标识,能帮你区分是驱动内部线程还是框架线程。
内容的提问来源于stack exchange,提问作者Aman Mittal
相关产品推荐
相关产品推荐

