Lakehouse catalog
Description
Lakehouse catalog (called Spark Catalog in earlier versions) is a reusable Hop metadata type (category Connections) that describes a catalog for open table formats. Lake table transforms in TABLE mode reference a catalog by name.
-
On the native Spark pipeline engine Hop expands the entry into
spark.sql.catalog.<catalogName>.*configuration when building or preparing the session (LakeSessionPlan/SparkCatalogApplier). -
On the Hop engine, Lake table input and Lake table output open the catalog with the Iceberg Java library. The
hadoopandrestcatalog types are supported there. The REST catalog gets the URI, Warehouse and Credential (astoken), plus the Extra conf lines as catalog properties; Spark-style keys (spark.sql.catalog.<name>.<key>) are accepted, so one catalog definition serves both engines. Files go through Hop VFS unless Extra conf setsio-impl.
Existing catalogs keep working: the metadata key (spark-catalog) hasn’t changed.
PATH-mode Iceberg tables do not require this metadata type — the engine registers a Hadoop catalog for the folder that holds each table (hop_iceberg_<hash>). Use a lakehouse catalog for production Iceberg warehouses, REST catalogs, and other named catalogs.
Connector packaging and session matrix: Lakehouse tables on the native Spark engine.
Load catalog template
Use Load catalog template at the top of the form to fill fields from a named scenario. Placeholders (bucket, host, URI) must still be adjusted for your environment. Secrets are never stored in templates — put tokens in Credential.
Every template writes a commented documentation link as the first line of Extra conf, for example:
# docs: https://iceberg.apache.org/docs/latest/spark-configuration/
# lines are ignored when Hop builds the Spark session, so the link is guidance only.
| Template | Type | What it sets |
|---|---|---|
Iceberg Hadoop (local) |
|
Catalog |
Iceberg Hadoop (object store) |
|
Catalog |
Iceberg REST |
|
Catalog |
Iceberg REST (authenticated) |
|
Same as REST; conf extra notes that Credential maps to catalog |
Hive Metastore (advanced) |
|
Catalog |
AWS Glue (advanced) |
|
Catalog |
Nessie (advanced) |
|
Catalog |
Databricks Unity Catalog (advanced) |
|
Catalog |
Delta named catalog (advanced) |
|
|
The Hop metadata Name (how transforms select this entry) is not changed by a template — only catalog fields are.
Options
| Option | Description |
|---|---|
Name |
Hop metadata name (how transforms reference this entry). |
Load catalog template |
Button that applies a named scenario (see above). Confirms before replacing non-empty fields. |
Catalog name |
Spark SQL catalog name — first segment of |
Catalog type |
|
Implementation |
Spark catalog class. Default for Iceberg is |
Warehouse |
Warehouse path for Hadoop (and similar) catalogs, e.g. |
URI |
Catalog service URI (REST and similar). |
Credential |
Optional secret (password field). For REST catalogs, applied as |
Conf extra |
Additional |
How it is applied
For a catalog named lake of type hadoop with warehouse file:///tmp/wh, Hop effectively sets:
spark.sql.catalog.lake=org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.lake.type=hadoop spark.sql.catalog.lake.warehouse=file:///tmp/wh
Lake Table transforms then use identifiers such as lake.db.orders.
When both Delta and Iceberg are used in one session, keep Delta on spark_catalog (DeltaCatalog) and put Iceberg under a different catalog name (e.g. lake or hop_iceberg).
spark-submit
Export project metadata JSON that includes every lakehouse catalog entry referenced by the pipeline (and any used only via run configuration). Alternatively, pass equivalent --conf spark.sql.catalog.… flags on the submit command. Paths and warehouses must be reachable from the driver and executors.