From oracle-ai-data-platform-workbench-spark-connectors
Read and write OCI Object Storage natively from AIDP notebooks using oci:// URI. Supports Spark reads/writes, external volumes, and external tables.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oracle-ai-data-platform-workbench-spark-connectors:aidp-object-storageThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Read and write Object Storage data directly from Spark. The AIDP cluster's IAM identity is used automatically — no `OCI_CONFIG`, no API keys, no inline PEM.
aidp-object-storage — OCI Object Storage native (oci://)Read and write Object Storage data directly from Spark. The AIDP cluster's IAM identity is used automatically — no OCI_CONFIG, no API keys, no inline PEM.
/Volumes/...) backed by an OCI bucket.USING CSV/PARQUET/...) over an oci:// path.aidp-iceberg.aidp-aws-s3.aidp-azure-adls.oci://<bucket>@<namespace>/<path>
The namespace is the tenancy's Object Storage namespace (OCI Console > Object Storage > Bucket Details).
oci_path = "oci://my-bucket@mynamespace/folder/file"
# Write
df.write.mode("overwrite").option("header", True).format("csv").save(oci_path)
# Read
df_read = spark.read.option("header", True).format("csv").load(oci_path)
df_read.show()
Same pattern with format("parquet"), format("json"), format("delta").
Mount a bucket once, reference by Volume path forever:
CREATE EXTERNAL VOLUME IF NOT EXISTS default.default.ext_volume
LOCATION 'oci://my-bucket@mynamespace/';
Then:
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 with DROP VOLUME default.default.ext_volume.
Register a table whose data lives in 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');
Query like any Spark table:
spark.sql("SELECT * FROM default.default.ext_table").show()
Drop with DROP TABLE default.default.ext_table.
OCI Console > Profile > Tenancy: <tenancy_name> — the object_storage_namespace field./Volumes/<catalog>/<schema>/<volume>/..., NOT oci://.... Once a volume is registered, address files via the Volume path.path option uses oci:// directly, not the Volume path. Both work; choose based on whether you want a re-mountable abstraction (Volume) or a simple direct reference (Table)./Workspace/... is NOT for data. It's a FUSE-mounted file system intended for notebooks/configs. For data files use oci:// or /Volumes/....npx claudepluginhub anthropics/claude-plugins-official --plugin oracle-ai-data-platform-workbench-spark-connectorsRead and write Apache Iceberg tables backed by OCI Object Storage. Supports time travel, schema evolution, and ACID transactions on data lake files.
Manages OCI Object Storage with Python SDK: discover namespaces, create/versioned buckets, simple/multipart uploads, PARs, lifecycle policies.
Create, edit, and execute AIDP notebooks and manage kernel sessions. Use for authoring notebooks, running cells on a Spark cluster, or building interactive notebooks with widgets + Spark SQL + Plotly.