GenerateTableFetch
编辑人:酷酷的诚 邮箱:zhangchengk@foxmail.com
#描述
该处理器用于生成在表中执行分页查询的SQL 查询语句,分区(属性partition)大小以及表的行数决定页面的大小和数量以及生成的流文件。此外,可以通过设置最大值列来实现增量抓取数据,处理器会跟踪列的最大值,从而只抓取列值超过已记录到的最大值的行,该处理器只在主节点上运行,可以接受传入的连接;
提供传入连接与否,处理器的行为是不同的:
如果没有指定传入连接,处理器将根据指定的处理器调度生成SQL语句。许多字段都支持表达式语言,但是没有流文件属性可用。但是,可以使用变量注册表评估属性。
如果指定了传入连接,并且处理器任务没有可用的流文件,则不执行任何工作。
如果指定了传入连接,并且处理程序任务有可用流文件,则流文件的属性可以在表达式语言中用于表名等字段。但是,Max-Value列和返回字段的列必须为空或者引用每个指定表中可用的列(多表查询,字段也可以设置成属性表达式语言就可以了)。
#属性配置
在下面的列表中,必需属性的名称以粗体显示。任何其他属性(不是粗体)都被认为是可选的,并且指出属性默认值(如果有默认值),以及属性是否支持表达式语言。
属性名称 | 默认值 | 可选值 | 描述 |
---|---|---|---|
Database Connection Pooling Service | Controller Service API: BCPService Implementations: DBCPConnectionPool DBCPConnectionPoolLookup HiveConnectionPool |
用于获取到数据库的连接的控制器服务。 | |
Database Type | Generic | ▪Generic ▪Oracle ▪Oracle 12+ ▪MS SQL 2012+ ▪MS SQL 2008 ▪MySQL |
数据库的类型,用于生成特定于数据库的代码。在许多情况下,泛型类型就足够了,但是有些数据库(如Oracle)需要定制SQL子句。 |
Table Name | 要查询的数据库表的名称。 支持表达式语言:true(将使用流文件属性和变量注册表进行评估) |
||
Columns to Return | 要在查询中使用的以逗号分隔的列名列表。如果数据库需要对名称进行特殊处理(例如引用),那么每个名称都应该包含这样的处理。如果没有提供列名,则返回指定表中的所有列。注意:对于给定的表,使用一致的列名很重要,这样增量获取才能正常工作。 支持表达式语言:true(将使用流文件属性和变量注册表进行评估) |
||
Maximum-value Columns | 以逗号分隔的列名列表。处理器将跟踪处理器开始运行以来返回的每个列的最大值。使用多个列意味着要对列列表进行排序,并且每个列的值的增长速度都比前一列的值要慢。因此,使用多个列意味着列的层次结构,**通常用于分区表。**此处理器仅可用于检索自上次检索以来已添加或更新的行。注意,一些JDBC类型(如bit/boolean)不利于维护最大值,因此这些类型的列不应该列在此属性中,并且在处理过程中会导致错误。如果没有提供此列,则将考虑表中的所有行,这可能会影响性能。注意:对于给定的表,使用一致的max-value列名很重要,这 |