如何在Cloudera ML平台上获取作业中使用的脚本名称
如何在Cloudera ML平台上获取作业中使用的脚本名称
我来分享几个实用的方向,帮你解决这个问题:
1. 排查Cloudera ML专属环境变量
Cloudera ML通常会设置平台特有的环境变量,除了作业ID相关的,你可以先打印所有环境变量找找线索:
import os for key, value in os.environ.items(): print(f"{key}: {value}")
重点留意带SCRIPT、JOB、NOTEBOOK这类关键词的变量,比如有些场景下会有CDSW_JOB_SCRIPT_NAME这类变量直接存储脚本名称。
2. 从IPython运行上下文提取信息
既然后台用IPython执行脚本,那可以试试从IPython内部对象里挖信息:
from IPython import get_ipython ip = get_ipython() if ip is not None: # 查看IPython启动参数 print(ip.args) # 或者检查历史执行记录 print(ip.history_manager.input_hist_parsed)
很多时候IPython会把原始脚本路径保留在启动参数里,从ip.args里就能筛选出脚本文件名。
3. 用Cloudera ML Python SDK直接获取元数据
如果API调用需要作业ID,其实不用手动找——Cloudera的cdsw SDK能直接获取当前运行会话的元数据:
import cdsw current_session = cdsw.current_session() # 从会话信息里提取脚本名称 print(current_session.get("script", "Unknown"))
这个方法会直接返回当前作业的关联信息,里面大概率包含你要的脚本名称。
4. 解析进程命令行参数
还可以直接读取当前Python进程的命令行参数:
import sys # 打印所有命令行参数 print(sys.argv)
如果Cloudera ML是通过ipython your_script.py这类方式启动的,sys.argv里肯定会包含你的脚本文件名,直接提取就行。
备注:内容来源于stack exchange,提问作者Mischa Lisovyi
相关产品推荐
相关产品推荐

