MaxFrame新增OSS檔案掛載能力,實現OSS Bucket與MaxCompute本地檔案系統的無縫映射。通過MaxFrame聲明式配置可以定義掛載路徑,結合類POSIX 介面直接操作OSS資料,無需依賴傳統SDK開發模式,顯著降低開發複雜度。
適用情境
大規模資料處理:適用於需頻繁互動OSS與MaxCompute的離線計算任務。
資料預先處理:快速讀取OSS中的未經處理資料,清洗、轉換後寫入MaxCompute。
混合儲存架構:在保留OSS儲存資料的同時,實現與MaxCompute的高效協同。
版本限制:要求MaxFrame SDK為2.4.0及以上版本。
核心特性
安全鑒權
支援基於RAM Role方式鑒權,避免暴露長期AK/SK,提升資料訪問安全性。
無縫整合
將OSS Bucket映射為MaxCompute本地檔案系統路徑,支援直接讀寫操作。
相容類POSIX介面(如
open、read、write),簡化檔案管理流程。
聲明式配置
通過MaxFrame聲明式配置:
@with_fs_mount定義掛載路徑,無需編寫複雜代碼即可完成資料對應。開發效率提升
無需SDK編碼,開發人員可直接通過API操作OSS資料,縮短開發週期。
核心參數
path - 遠程儲存地址定義
格式規範:
scheme://<endpoint>/<bucket>/<object_prefix>scheme:協議類型(OSS)。
endpoint:儲存服務訪問端點。
bucket:儲存桶名稱。
object_prefix:儲存桶內的對象首碼路徑。
使用樣本:
path = "oss://oss-cn-shanghai-internal.aliyuncs.com/maxframe-test/oss_data"
mount_path - MaxCompute 本地掛載點
參數說明:
mount_path用於指定遠程儲存系統的MaxCompute本地訪問路徑,MaxFrame會自動建立該目錄並掛載檔案系統。配置要求:
許可權要求:運行使用者需具備目錄讀寫權限。
唯一性:每個掛載點是獨立的,避免路徑衝突。
生命週期:裝飾器執行結束後自動卸載(支援異常安全卸載)。
使用樣本:
mount_path = "/mnt/oss_data" # MaxCompute本地掛載路徑
storage_options - 認證與配置參數
使用RAM Role方式認證
登入RAM控制台。
在左側導覽列選擇。
在基礎資訊地區,可以擷取ARN資訊。
樣本如下:
storage_options = { "role_arn": "acs:ram::xxxxxxxx:role/MaxFrameAccessRole" }RAM Policy樣本,最小許可權原則(唯讀訪問):
{ "Statement": [ { "Action": "oss:GetObject", "Effect": "Allow", "Resource": "acs:oss:*:*:maxframe-***-poc/oss_data/*" } ], "Version": "1" }
功能樣本
如下代碼為功能使用樣本的程式碼片段,完整功能使用代碼,可參考OSS掛載及使用實踐。
OSS資料處理
from maxframe.udf import with_fs_mount
@with_running_options(engine="dpe", cpu=2, memory=8)
@with_fs_mount(
path="oss://oss-cn-shanghai-internal.aliyuncs.com/bigdata-bucket/preprocessed/",
mount_path="/mnt/data",
storage_options={"role_arn": "acs:ram::123456:role/DataAccess"}
)
def etl_job():
df = pd.read_csv("/mnt/data/2025-*.csv")
# 分散式運算...OSS模型檔案載入
from maxframe.udf import with_fs_mount
@with_running_options(engine="dpe", cpu=2, memory=8)
@with_fs_mount(
path="oss://oss-cn-shanghai-internal.aliyuncs.com/model-registry/model_path",
mount_path="/mnt/model_path",
storage_options={"role_arn": "acs:ram::123456:role/ModelAccess"}
)
def resume_training():
model = load_model("/mnt/model_path/model.pkl)
# 模型訓練...