private static SparkUtil.TableCatalogAndIdentifier catalogAndIdentifier(
      CaseInsensitiveStringMap options) {
    Preconditions.checkArgument(options.containsKey("path"), "Cannot open table: path is not set");
    String path = options.get("path");
    Preconditions.checkArgument(
        !path.contains("/"), "invalid table identifier %s, contain '/'", path);
    List<String> nameParts = Lists.newArrayList(path.split("\\."));
    SparkSession spark = SparkSession.active();
    TableCatalog current = (TableCatalog) spark.sessionState().catalogManager().currentCatalog();
    return SparkUtil.catalogAndIdentifier(spark, nameParts, current);
  }
Spark DataSource register base for mixed format
amoro-format-mixed/amoro-mixed-spark/amoro-mixed-spark-3-common/src/main/java/org/apache/amoro/spark/mixed/MixedSourceBase.java