datax源码阅读一:python文件
生活随笔
收集整理的這篇文章主要介紹了
datax源码阅读一:python文件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、前面主要是怎么使用datax和datax的插件編寫,后面主要說明源碼閱讀部分,python相關(guān)文件
二、datax關(guān)鍵代碼(python datax.py test.json)
1、datax.py文件
上面代碼關(guān)鍵部分是函數(shù)buildStartCommand(options, args)拼出來的java命令,然后啟動(dòng)一個(gè)新的子進(jìn)程去執(zhí)行java命令
def buildStartCommand(options, args): commandMap = {} tempJVMCommand = DEFAULT_JVM if options.jvmParameters:tempJVMCommand = tempJVMCommand + " " + options.jvmParametersif options.remoteDebug:tempJVMCommand = tempJVMCommand + " " + REMOTE_DEBUG_CONFIGprint 'local ip: ', getLocalIp()if options.loglevel:tempJVMCommand = tempJVMCommand + " " + ("-Dloglevel=%s" % (options.loglevel))if options.mode:commandMap["mode"] = options.mode# jobResource 可能是 URL,也可能是本地文件路徑(相對,絕對) jobResource = args[0] if not isUrl(jobResource):jobResource = os.path.abspath(jobResource)if jobResource.lower().startswith("file://"):jobResource = jobResource[len("file://"):]jobParams = ("-Dlog.file.name=%s") % (jobResource[-20:].replace('/', '_').replace('.', '_')) if options.params:jobParams = jobParams + " " + options.paramsif options.jobid:commandMap["jobid"] = options.jobidcommandMap["jvm"] = tempJVMCommand commandMap["params"] = jobParams commandMap["job"] = jobResourcereturn Template(ENGINE_COMMAND).substitute(**commandMap)java命令是通過模板ENGINE_COMMAND和commandMap拼接而成,其中ENGINE_COMMAND是主要的java腳本命令
ENGINE_COMMAND = "java -server ${jvm} %s -classpath %s ${params} com.alibaba.datax.core.Engine -mode ${mode} -jobid ${jobid} -job ${job}" % (DEFAULT_PROPERTY_CONF, CLASS_PATH)commandMap中包含jvm參數(shù)、任務(wù)動(dòng)態(tài)參數(shù)和job文件信息(json配置文件),根據(jù)這個(gè)python文件,用戶可以自行修改jvm相關(guān)參數(shù),如
DEFAULT_JVM = "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%s/log" % (DATAX_HOME)2、上述python文件執(zhí)行完畢之后會(huì)啟動(dòng)java命令,主函數(shù)是com.alibaba.datax.core.Engine,至此python文件主要流程完畢
總結(jié)
以上是生活随笔為你收集整理的datax源码阅读一:python文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Liunx 常用命令 (几乎包含所有了)
- 下一篇: CSS整理