You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用.NET Spark+Hadoop连接ADLS Gen2时遇IOStatisticsSource类找不到错误

解决.NET Spark 3.0.1 + Hadoop 3.2.2 连接Azure Data Lake Storage Gen2的依赖错误

问题根源

  1. 第一个错误(ClassNotFoundException):Hadoop 3.2.2默认不包含Azure Data Lake Storage Gen2(ABFS)的驱动类SecureAzureBlobFileSystem,需额外添加对应依赖。
  2. 第二个错误(NoClassDefFoundError):混用了不同版本的Hadoop依赖——核心Hadoop用3.2.2,但添加了3.3.1版本的hadoop-azure包。IOStatisticsSource是Hadoop 3.3.x新增的API,3.2.2版本中不存在,导致依赖缺失。

解决步骤

  • 移除hadoop-azure-3.3.1.jar,改用与Hadoop版本完全一致的hadoop-azure-3.2.2.jar
  • 补充配套的azure-storage-8.6.6.jar(Hadoop 3.2.2官方适配的Azure存储依赖包)
  • 确保所有Hadoop相关jar包版本统一,杜绝跨版本依赖冲突

优化后的代码示例

添加Azure存储账户的认证配置(以账户密钥为例):

namespace MySparkApp
{
    class Program
    {
        static void Main(string[] args)
        {
            SparkSession spark =
                SparkSession
                    .Builder()
                    .AppName("word_count_sample")
                    // 配置存储账户密钥
                    .Config("fs.azure.account.key.<storage_account>.dfs.core.windows.net", "<your_storage_account_access_key>")
                    .GetOrCreate();
    
            DataFrame df = spark.Read().Json("abfss://<container_name>@<storage_account>.dfs.core.windows.net/sample/data/file.json");

            df.Show();

            spark.Stop();
        }
    }
}

依赖加载说明

  • 将上述两个jar包放入Spark安装目录的jars文件夹,或者在提交应用时通过--jars参数指定:
    spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local[*] --jars hadoop-azure-3.2.2.jar,azure-storage-8.6.6.jar microsoft-spark-3-0_2.12-1.0.0.jar dotnet MySparkApp.dll
    

内容的提问来源于stack exchange,提问作者Shubham Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:00:56