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

使用Spark读取DynamoDB时遇java.lang.ClassNotFoundException异常

解决Spark读取DynamoDB时的数据源找不到问题

你遇到的DATA_SOURCE_NOT_FOUND和ClassNotFoundException: dynamodb.DefaultSource问题,核心是Spark无法识别指定的dynamodb数据源格式,以及依赖打包或配置有误,以下是具体修复方案:

1. 修正数据源格式配置

你使用的com.audienceproject/spark-dynamodb依赖,其对应的数据源格式名称不是dynamodb,而是com.audienceproject.spark.dynamodb,或者可以直接指定完整的数据源类名。修改Java代码中的format部分:

方式一:使用依赖指定的格式名称

Dataset citations = sparkSession.read()
    .option("tableName", "Covid19Citation")
    .option("aws.dynamodb.region", "us-east-1")
    .option("aws.dynamodb.endpoint", "dynamodb.us-east-1.amazonaws.com")
    .format("com.audienceproject.spark.dynamodb") // 修正此处
    .load();

方式二:直接指定数据源类名

Dataset citations = sparkSession.read()
    .option("tableName", "Covid19Citation")
    .option("aws.dynamodb.region", "us-east-1")
    .option("aws.dynamodb.endpoint", "dynamodb.us-east-1.amazonaws.com")
    .format("com.amazonaws.services.dynamodbv2.spark.DefaultSource") // 指定完整类名
    .load();

2. 修复FatJar打包配置

你的Gradle FatJar任务存在两处问题,导致依赖可能未被正确打包:

  • exclude配置放错了位置,应该放在任务根级别而非manifest内
  • 使用已弃用的configurations.compile,建议替换为configurations.compileClasspath

修改后的FatJar任务:

task fatJar(type: Jar) {
    zip64 true
    manifest {
        attributes 'Main-Class': 'com.lcarvalho.sparkddb.Covid19CitationsWordCount'
        attributes 'Implementation-Title': 'Spark Job', 'Implementation-Version': version
    }
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
    baseName = 'Covid19CitationsWordCount'
    from {
        configurations.compileClasspath.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    with jar
}

3. 验证依赖兼容性

com.audienceproject:spark-dynamodb_2.12:1.1.2本身兼容Spark 2.4.x版本,无需调整依赖版本,但确保执行gradle fatJar时没有依赖下载失败的情况。

备选方案:提交任务时指定依赖包

如果不想打包FatJar,可以在Spark提交命令中通过--packages参数引入依赖:

spark-submit --packages com.audienceproject:spark-dynamodb_2.12:1.1.2 --class com.lcarvalho.sparkddb.Covid19CitationsWordCount your-app.jar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:03:16