如何在Foundry代码仓库中向文件系统写入RDS文件?
在Foundry代码仓库中写入RDS文件到文件系统
要实现从Foundry代码仓库向文件系统写入RDS文件,你需要将输出类型从数据表改为文件输出,然后通过rpy2将R对象保存为本地临时文件,再上传到Foundry的文件系统中。以下是修改后的完整代码:
from transforms.api import transform, Output import tempfile import os from rpy2.robjects.packages import importr import rpy2.robjects as ro @transform( # 声明输出为文件类型 output=Output("/Global/Foundry Training/Examples/PySpark & Python Transforms/Transforms Execute R Code/lower_rds", type="file") ) def my_compute_function(ctx, output): base = importr('base') # 生成目标对象 lower_case = base.tolower("LOWER")[0] # 创建临时文件用于保存RDS with tempfile.NamedTemporaryFile(suffix='.rds', delete=False) as tmp_file: tmp_path = tmp_file.name try: # 使用R的saveRDS函数将对象写入临时文件 base.saveRDS(lower_case, file=tmp_path) # 将临时文件上传到Foundry文件系统的输出路径 output.upload_file(tmp_path) finally: # 清理临时文件 os.unlink(tmp_path)
关键说明:
- 输出类型修改:在
Output中添加type="file",告诉Foundry这是一个文件输出而非数据表。 - 临时文件处理:利用Python的
tempfile模块创建本地临时文件,避免直接操作Foundry的文件系统路径(Foundry Transform中无法直接写入绝对路径)。 - RDS保存与上传:通过rpy2调用R的
saveRDS函数将对象写入临时文件,再用output.upload_file()方法将文件上传到指定的Foundry路径。 - 资源清理:最后删除临时文件,避免占用本地存储资源。
内容的提问来源于stack exchange,提问作者jamba-laya
相关产品推荐
相关产品推荐

