Dataproc提交PySpark任务:如何访问zip包内的YAML配置文件
解决方案
不需要手动解压整个zip包,有两种更优的处理方式,根据你的需求选择:
方式一:直接读取zip包内的YAML文件(推荐)
利用Python的zipfile模块,可以直接读取zip包内的文件内容,无需解压整个包,节省磁盘空间和IO开销。示例代码如下:
import zipfile import yaml # 读取zip包内的YAML文件 with zipfile.ZipFile('app_code_v2.zip', 'r') as zip_ref: # 假设YAML文件在zip包根目录下,名为config.yaml with zip_ref.open('config.yaml') as yaml_file: config = yaml.safe_load(yaml_file) # 后续使用config即可 print(config)
如果YAML文件在zip包的子目录里(比如configs/config.yaml),把路径改成对应子路径即可。
方式二:按需解压指定文件或整个包
如果需要频繁访问zip内的多个文件,或者需要让其他非Python程序访问这些文件,可以选择解压。无需手动操作,在main.py里添加解压逻辑即可:
import zipfile import os zip_path = 'app_code_v2.zip' extract_dir = './app_code' # 避免重复解压 if not os.path.exists(extract_dir): with zipfile.ZipFile(zip_path, 'r') as zip_ref: zip_ref.extractall(extract_dir) # 之后就可以直接访问解压后的YAML文件 with open(f'{extract_dir}/config.yaml', 'r') as f: config = yaml.safe_load(f)
注意:--files参数会把zip包分发到集群每个节点的工作目录,所以这个解压逻辑会在每个执行任务的节点上自动执行,确保所有节点都能访问到配置文件。
内容的提问来源于stack exchange,提问作者saravana ir
相关产品推荐
相关产品推荐

