public String createHiveTableSQL(TableIdentifier identifier, Map<String, String> tableProps) {
    Preconditions.checkArgument(!identifier.namespace().isEmpty(), "Namespace should not be empty");
    Preconditions.checkArgument(identifier.namespace().levels().length == 1, "Namespace should be single level");
    return String.format("CREATE EXTERNAL TABLE %s.%s STORED BY '%s' %s %s", identifier.namespace(), identifier.name(),
        HiveIcebergStorageHandler.class.getName(), locationForCreateTableSQL(identifier),
            propertiesForCreateTableSQL(tableProps));
  }
If an independent Hive table creation is needed for the given Catalog then this should return the Hive SQL
string which we have to execute. Overridden for HiveCatalog where the Hive table is immediately created
during the Iceberg table creation so no extra sql execution is required.
@param identifier The table identifier (the namespace should be non-empty and single level)
@param tableProps Optional map of table properties
@return The SQL string - which should be executed, null - if it is not needed.
iceberg/iceberg-handler/src/test/java/org/apache/iceberg/mr/hive/TestTables.java