apache/hadoop · error · UnsupportedOperationException

WASB Driver using wasb(s) schema is no longer supported. Ins

Error message

WASB Driver using wasb(s) schema is no longer supported. Instead use ABFS Driver for FNS account by changing the scheme to abfs(s).For more details contact askabfs@microsoft.com

What it means

NativeAzureFileSystem is the tombstone for the removed WASB driver (wasb:// and wasbs://, blob-based Azure storage, also registered via the Secure subclass). Its initialize() throws UnsupportedOperationException with WASB_INIT_ERROR_MESSAGE, directing users to the ABFS driver (abfs:// / abfss://) on a hierarchical-namespace (ADLS Gen2) account. Any attempt to create the filesystem - FileSystem.get / newInstance on a wasb URL, 'hadoop fs -ls wasb://...' - fails here before any storage call is made.

Source

Thrown at hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/NativeAzureFileSystem.java:74

  public static class Secure extends NativeAzureFileSystem {
    @Override
    public String getScheme() {
      return SECURE_SCHEME;
    }
  }

  /**
   * Fails Any Attempt to use WASB FileSystem Implementation.
   *
   * @param uri  the URI of the file system
   * @param conf the configuration
   * @throws IOException              on IO problems
   * @throws UnsupportedOperationException if the URI is invalid
   */
  @Override
  public void initialize(URI uri, Configuration conf)
      throws IOException, UnsupportedOperationException {
    throw new UnsupportedOperationException(WASB_INIT_ERROR_MESSAGE);
  }

  @Override
  public String getScheme() {
    return SCHEME;
  }

  @Override
  public URI getUri() {
    return null;
  }

  @Override
  public FSDataInputStream open(final Path path, final int i)
      throws IOException {
    throw new UnsupportedOperationException(WASB_INIT_ERROR_MESSAGE);
  }

View on GitHub (pinned to 2add963021)

Solutions

  1. Change URIs from wasb:// to abfs:// and wasbs:// to abfss:// (e.g. abfs://container@account.dfs.core.windows.net/path)
  2. Ensure the storage account has the hierarchical namespace (HNS / ADLS Gen2) enabled - ABFS requires it; migrate blob data with AzCopy or an Azure data-migration tool where needed
  3. Replace WASB-era fs.azure.* keys with the ABFS authentication settings (fs.azure.account.auth.type, fs.azure.account.key.*, or OAuth) in core-site.xml
  4. Sweep code, job definitions, Hive metastore locations and config files for 'wasb://' and 'wasbs://' to catch every reference

Example fix

# before
hadoop fs -ls wasb://data@oldaccount.blob.core.windows.net/logs
# after
hadoop fs -ls abfs://data@newaccount.dfs.core.windows.net/logs
Defensive patterns

Strategy: validation

Validate before calling

String scheme = path.toUri().getScheme();
if ("wasb".equals(scheme) || "wasbs".equals(scheme)) {
  throw new IllegalArgumentException(
      "WASB removed: rewrite " + path + " to abfs(s):// on an ADLS Gen2 account");
}

Try / catch

try {
  FileSystem fs = path.getFileSystem(conf);
} catch (UnsupportedOperationException e) {
  if (e.getMessage().contains("ABFS Driver")) {
    // rewrite wasb:// -> abfs:// and retry with ABFS config
  }
}

Prevention

When it happens

Trigger: FileSystem.get(new Path("wasb://container@account.blob.core.windows.net/dir")); 'hadoop fs' commands on wasb:// or wasbs:// URLs; distcp, Hive or Spark jobs carrying wasb paths running on Hadoop 3.4.0 or later.

Common situations: Upgrading a cluster from Hadoop 3.3.x (or an older Azure HDInsight image) where WASB worked; legacy pipelines, cron jobs and metastore locations still holding wasb:// URLs; fs.azure.* WASB configuration carried forward into the new cluster.

Related errors


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/30b3ba44eda623c2. Report an issue: GitHub.