From oracle-ai-data-platform-workbench-spark-connectors
Read and write Apache Iceberg tables backed by OCI Object Storage. Supports time travel, schema evolution, and ACID transactions on data lake files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oracle-ai-data-platform-workbench-spark-connectors:aidp-icebergThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manage Iceberg tables (ACID, time travel, schema evolution, partition pruning) backed by OCI Object Storage as the warehouse. The Iceberg Hadoop catalog stores all metadata in the same bucket as data — no external metastore.
aidp-iceberg — Apache Iceberg on OCI Object StorageManage Iceberg tables (ACID, time travel, schema evolution, partition pruning) backed by OCI Object Storage as the warehouse. The Iceberg Hadoop catalog stores all metadata in the same bucket as data — no external metastore.
oci:// (no transactions / time-travel) → aidp-object-storage.OCI_NAMESPACE = "<namespace>"
BUCKET_NAME = "<bucket>"
WAREHOUSE = f"oci://{BUCKET_NAME}@{OCI_NAMESPACE}/iceberg-warehouse"
CATALOG_NAME = "oci_catalog"
spark.conf.set(f"spark.sql.catalog.{CATALOG_NAME}", "org.apache.iceberg.spark.SparkCatalog")
spark.conf.set(f"spark.sql.catalog.{CATALOG_NAME}.type", "hadoop")
spark.conf.set(f"spark.sql.catalog.{CATALOG_NAME}.warehouse", WAREHOUSE)
After this, all SQL referring to oci_catalog.<db>.<table> is Iceberg-managed.
DB = "demo_db"
TABLE = "employees"
FQN = f"{CATALOG_NAME}.{DB}.{TABLE}"
spark.sql(f"CREATE DATABASE IF NOT EXISTS {CATALOG_NAME}.{DB}")
spark.sql(f"""
CREATE TABLE {FQN} (
employee_id INT,
employee_name STRING,
salary DOUBLE,
department STRING,
hire_date DATE
)
USING iceberg
PARTITIONED BY (department)
""")
import pandas as pd
from datetime import date
pdf = pd.DataFrame([
(101, "John Doe", 75000.0, "Engineering", date(2022, 1, 15)),
(102, "Jane Smith", 85000.0, "Sales", date(2021, 3, 20)),
], columns=["employee_id", "employee_name", "salary", "department", "hire_date"])
spark.createDataFrame(pdf).writeTo(FQN).append()
spark.sql(f"ALTER TABLE {FQN} ADD COLUMN location STRING")
# Old rows show NULL for the new column; no errors.
snaps = spark.sql(f"""
SELECT snapshot_id, committed_at, operation
FROM {FQN}.snapshots
ORDER BY committed_at
""").collect()
first = snaps[0].snapshot_id
spark.sql(f"SELECT * FROM {FQN} VERSION AS OF {first}").show()
spark.sql(f"""
SELECT file_path, file_format, record_count, file_size_in_bytes
FROM {FQN}.files
""").show(truncate=False)
aidp-object-storage. The workspace IAM identity reads/writes Object Storage. No keys.<warehouse>/<db>/<table>/metadata/. There is no Hive metastore, no Glue, no JDBC catalog.USING iceberg is required in CREATE TABLE; otherwise Spark uses the default V1 file source and you lose ACID.history.expire.max-snapshot-age-ms); set this if long-term time travel matters.department in the example). Without that predicate Iceberg still reads all files but in parallel.npx claudepluginhub anthropics/claude-plugins-official --plugin oracle-ai-data-platform-workbench-spark-connectorsGuides creation and management of Apache Iceberg tables on Databricks: managed tables, External Iceberg Reads (Uniform) on Delta tables, Iceberg REST Catalog for external engines, Snowflake interop, PyIceberg, OSS Spark. Use for table creation, Delta-Iceberg compatibility, external access.
Creates managed Iceberg tables using Amazon S3 Tables with compaction, snapshot management, schema, partitioning, Glue catalog registration, and IAM controls. For AWS data lake and analytics table setup.
Read and write OCI Object Storage natively from AIDP notebooks using oci:// URI. Supports Spark reads/writes, external volumes, and external tables.