SuperAPI AI 工具集

aidp-object-storage

数据与分析

查看项目

更新于 10-16 09:18

技能介绍

aidp-object-storage 是一个面向 AIDP 笔记本的技能,用于通过 oci:// URI 方案原生读写 OCI 对象存储数据。它让 Spark 能够直接访问对象存储,认证由 AIDP 集群的 IAM 身份自动完成,用户无需提供 OCI_CONFIG、API 密钥或内联 PEM。

用途

该技能适用于以下场景:从 Spark 在 OCI 存储桶中落地或读取 CSV、Parquet、JSON、Avro、Delta 文件;注册由 OCI 存储桶支持的外部卷(/Volumes/...);在 oci:// 路径上定义外部表(USING CSV/PARQUET/...)。当用户提到 "oci://"、"Object Storage bucket"、"external volume"、"external table" 时可使用。

不适用场景:OCI 对象存储上的 Iceberg 表应使用 aidp-iceberg;AWS S3 应使用 aidp-aws-s3;Azure ADLS Gen2 应使用 aidp-azure-adls。

URI 形式

oci://<bucket>@<namespace>/<path>

其中 namespace 是租户的对象存储命名空间,可在 OCI 控制台的 Object Storage > Bucket Details 中查看。

直接读写

oci_path = "oci://my-bucket@mynamespace/folder/file"

写入: df.write.mode("overwrite").option("header", True).format("csv").save(oci_path)

读取: df_read = spark.read.option("header", True).format("csv").load(oci_path) df_read.show()

同样的模式适用于 format("parquet")、format("json")、format("delta")。

外部卷(DDL)

挂载一次存储桶,之后通过卷路径引用:

CREATE EXTERNAL VOLUME IF NOT EXISTS default.default.ext_volume LOCATION 'oci://my-bucket@mynamespace/';

然后:

volume_path = "/Volumes/default/default/ext_volume/folder/file" df.write.format("csv").option("header", True).save(volume_path) spark.read.option("header", True).format("csv").load(volume_path).show()

删除使用 DROP VOLUME default.default.ext_volume。

外部表(DDL)

注册一个数据位于 oci:// 的表:

CREATE TABLE IF NOT EXISTS default.default.ext_table (name STRING, age INT) USING CSV OPTIONS (path='oci://my-bucket@mynamespace/folder/file', delimiter=',', header='true');

像普通 Spark 表一样查询:

spark.sql("SELECT * FROM default.default.ext_table").show()

删除使用 DROP TABLE default.default.ext_table。

注意事项

认证是隐式的,使用 AIDP 集群的 IAM 身份,用户无需输入 OCI 密钥。如果读取失败并返回 404/403,说明工作区身份缺少存储桶权限,需在 OCI IAM 中修复。

命名空间不等于租户名称。对象存储命名空间是一个独立且不可变的字符串,可在 OCI 控制台的 Profile > Tenancy: <tenancy_name> 中找到 object_storage_namespace 字段。

外部卷路径是 /Volumes/<catalog>/<schema>/<volume>/...,而不是 oci://...。卷注册后,通过卷路径访问文件。

外部表的 path 选项直接使用 oci://,而不是卷路径。两者都可用,选择取决于你想要可重新挂载的抽象(卷)还是简单的直接引用(表)。

/Workspace/... 不用于数据。它是为笔记本和配置设计的 FUSE 挂载文件系统。数据文件请使用 oci:// 或 /Volumes/...。

参考资料

官方示例:oracle-samples/oracle-aidp-samples → getting-started/Access_Object_Storage_Data.ipynb