【发布时间】:2018-07-20 13:02:49
【问题描述】:
下面是我运行调用sqoop的python代码,但是除了下面几行之外,这并没有捕获日志
警告:/usr/hdp/2.6.4.0-91/accumulo 不存在! Accumulo 导入将失败。 请将 $ACCUMULO_HOME 设置为 Accumulo 安装的根目录。
import subprocess
job = "sqoop-import --direct --connect 'jdbc:sqlserver://host' --username myuser --password-file /user/ivr_sqoop --table data_app_det --delete-target-dir --verbose --split-by attribute_name_id --where \"db_process_time BETWEEN ('2018-07-15') and ('9999-12-31')\""
print job
with open('save.txt','w') as fp:
proc = subprocess.Popen(job, stdout=fp, stderr=subprocess.PIPE, shell=True)
stdout, stderr = proc.communicate()
print "Here is the return code :: " + str(proc.returncode)
print stdout`
如果我打电话的方式有问题,请告诉我。
注意:单个 sqoop cmd 运行良好并生成所有日志。
我也试过下面的方法,结果是一样的
import subprocess
job = "sqoop-import --direct --connect 'jdbc:sqlserver://host' --username myuser --password-file /user/ivr_sqoop --table data_app_det --delete-target-dir --verbose --split-by attribute_name_id --where \"db_process_time BETWEEN ('2018-07-15') and ('9999-12-31')\""
proc = subprocess.Popen(job, stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=True)
stdout, stderr = proc.communicate()
并且还在 cmd 末尾使用 '2> mylog.log'
import subprocess
job = "sqoop-import --direct --connect 'jdbc:sqlserver://host' --username myuser --password-file /user/ivr_sqoop --table data_app_det --delete-target-dir --verbose --split-by attribute_name_id --where \"db_process_time BETWEEN ('2018-07-15') and ('9999-12-31')\" > mylog.log "
proc = subprocess.Popen(job, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
stdout, stderr = proc.communicate()
我找到了下面类似的问题,但那里也没有答案。
Subprocess Popen : Ignore Accumulo warning and continue execution of Sqoop
【问题讨论】:
标签: python subprocess sqoop popen