kbendick commented on a change in pull request #2983: URL: https://github.com/apache/iceberg/pull/2983#discussion_r690630077
########## File path: spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java ########## @@ -755,6 +755,27 @@ private static String sqlString(org.apache.iceberg.expressions.Literal<?> lit) { return null; } + /** + * Returns an Iceberg Table by its name from a Spark V2 Catalog + * + * @param spark SparkSession used for looking up catalog references and tables + * @param name The multipart identifier of the Iceberg table + * @return an Iceberg table + */ + public static org.apache.iceberg.Table loadIcebergTable(SparkSession spark, String name) + throws ParseException, NoSuchTableException { + CatalogAndIdentifier catalogAndIdentifier = catalogAndIdentifier(spark, name); + + CatalogPlugin catalog = catalogAndIdentifier.catalog; + Preconditions.checkArgument(catalog instanceof BaseCatalog, "Catalog %s(%s) cannot be used " + + "to load Iceberg tables", catalog.name(), catalog.getClass().toString()); + BaseCatalog baseCatalog = (BaseCatalog) catalogAndIdentifier.catalog; + Table table = baseCatalog.loadTable(catalogAndIdentifier.identifier); Review comment: Cool. That definitely helps without overcomplicating the type structure. Good call! ########## File path: spark3/src/main/java/org/apache/iceberg/spark/Spark3Util.java ########## @@ -755,6 +755,27 @@ private static String sqlString(org.apache.iceberg.expressions.Literal<?> lit) { return null; } + /** + * Returns an Iceberg Table by its name from a Spark V2 Catalog + * + * @param spark SparkSession used for looking up catalog references and tables + * @param name The multipart identifier of the Iceberg table + * @return an Iceberg table + */ + public static org.apache.iceberg.Table loadIcebergTable(SparkSession spark, String name) + throws ParseException, NoSuchTableException { + CatalogAndIdentifier catalogAndIdentifier = catalogAndIdentifier(spark, name); + + CatalogPlugin catalog = catalogAndIdentifier.catalog; + Preconditions.checkArgument(catalog instanceof BaseCatalog, "Catalog %s(%s) is not an Iceberg Catalog", + catalog.name(), catalog.getClass().toString()); + BaseCatalog baseCatalog = (BaseCatalog) catalogAndIdentifier.catalog; + Table sparkTable = baseCatalog.loadTable(catalogAndIdentifier.identifier); + + Preconditions.checkArgument(sparkTable instanceof SparkTable, "%s isn't a valid Iceberg table", name); Review comment: This does indeed seem to be the same logic as `Spark3Util.toIcebergTable`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org