diff --git a/core/src/main/java/org/apache/iceberg/CatalogProperties.java b/core/src/main/java/org/apache/iceberg/CatalogProperties.java index 66e46005c8ee..ff3f7a1a142f 100644 --- a/core/src/main/java/org/apache/iceberg/CatalogProperties.java +++ b/core/src/main/java/org/apache/iceberg/CatalogProperties.java @@ -55,4 +55,7 @@ private CatalogProperties() { public static final String LOCK_TABLE = "lock.table"; + public static final String CATALOG_CACHE_ENABLED = "cache-enabled"; + public static final String CATALOG_CACHE_ENABLED_DEFAULT = "false"; + } diff --git a/site/docs/configuration.md b/site/docs/configuration.md index afa02deb863c..be9deb2de85a 100644 --- a/site/docs/configuration.md +++ b/site/docs/configuration.md @@ -84,7 +84,7 @@ Iceberg catalogs support using catalog properties to configure catalog behaviors | warehouse | null | the root path of the data warehouse | | uri | null | a URI string, such as Hive metastore URI | | clients | 2 | client pool size | - +| cache-enabled | false | cache catalog, only works for Spark | `HadoopCatalog` and `HiveCatalog` can access the properties in their constructors. Any other custom catalog can access the properties by implementing `Catalog.initialize(catalogName, catalogProperties)`. The properties can be manually constructed or passed in from a compute engine like Spark or Flink. diff --git a/spark3/src/main/java/org/apache/iceberg/spark/SparkCatalog.java b/spark3/src/main/java/org/apache/iceberg/spark/SparkCatalog.java index b4c92b408738..0543f5dc357e 100644 --- a/spark3/src/main/java/org/apache/iceberg/spark/SparkCatalog.java +++ b/spark3/src/main/java/org/apache/iceberg/spark/SparkCatalog.java @@ -25,6 +25,7 @@ import java.util.TreeMap; import org.apache.hadoop.conf.Configuration; import org.apache.iceberg.CachingCatalog; +import org.apache.iceberg.CatalogProperties; import org.apache.iceberg.CatalogUtil; import org.apache.iceberg.Schema; import org.apache.iceberg.Table; @@ -379,7 +380,8 @@ public boolean dropNamespace(String[] namespace) throws NoSuchNamespaceException @Override public final void initialize(String name, CaseInsensitiveStringMap options) { - this.cacheEnabled = Boolean.parseBoolean(options.getOrDefault("cache-enabled", "true")); + this.cacheEnabled = Boolean.parseBoolean(options.getOrDefault(CatalogProperties.CATALOG_CACHE_ENABLED, + CatalogProperties.CATALOG_CACHE_ENABLED_DEFAULT)); Catalog catalog = buildIcebergCatalog(name, options); this.catalogName = name;