整体的执行流程包含preHandle、init、prepare、split、schedule、post、postHandle、invokeHooks、destroy、logStatistics。
preHandle
须要设置job.preHandler.pluginType
和job.preHandler.pluginName
,前者是PluginType枚举里的值,包含READER、TRANSFORMER、WRITER、HANDLER,后者是插件名称,通过这两个值就能够找到对应的插件(这个过程在上篇讲过了),并执行preHandler办法。
init
init次要是加载Reader.Job和Writer.Job两个插件,加载后会调用Reader.Job和Writer.Job对应的init办法。
比方HdfsReader和HdfsWriter,用于校验必填项、数据的合法性,初始化org.apache.hadoop.conf.Configuration。
比方MysqlReader,解决where条件、校验username、password是否有配置,数据库是否能够连贯,表是否存在等。
prepare
调用Reader.Job和Writer.Job对应的prepare办法。
比方HdfsReader用来获取指定门路列表下符合条件的所有文件的绝对路径。
比方MysqlWriter,单表的时候执行presql。
split
调用Reader.Job和Writer.Job对应的split办法,对reader和writer进行切分,并且reader和writer是1:1的关系。
比方MysqlReader,就会依据主键进行切分。
比方HdfsReader,就会依据文件数进行切分。
schedule
任务调度的中央,这个前面开个章节来讲。
post
调用Reader.Job和Writer.Job对应的post办法。
比方MysqlWriter,单表状况下执行postSql语句。
postHandle
须要设置job.postHandler.pluginType
和job.postHandler.pluginName
,前者是PluginType枚举里的值,包含READER、TRANSFORMER、WRITER、HANDLER,后者是插件名称,通过这两个值就能够找到对应的插件,并执行postHandle办法。
invokeHooks
次要是调用内部hook。
destroy
调用Reader.Job和Writer.Job对应的destroy办法。
logStatistics
用于打印后果。
发表回复