乐趣区

关于java:DataX-整体的执行流程

整体的执行流程包含 preHandle、init、prepare、split、schedule、post、postHandle、invokeHooks、destroy、logStatistics。

preHandle

须要设置 job.preHandler.pluginTypejob.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.pluginTypejob.postHandler.pluginName,前者是 PluginType 枚举里的值,包含 READER、TRANSFORMER、WRITER、HANDLER,后者是插件名称,通过这两个值就能够找到对应的插件,并执行 postHandle 办法。

invokeHooks

次要是调用内部 hook。

destroy

调用 Reader.Job 和 Writer.Job 对应的 destroy 办法。

logStatistics

用于打印后果。

退出移动版