使用dynamodbmapper加密emr中的数据时发生illegalaccesserror

l0oc07j2  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(477)

我遵循了这个文件:https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/java-examples.html 并设置加密客户端和Map器来加密项并将其保存到表中,但它不起作用并引发错误,如下所示
堆栈跟踪详细信息:
错误客户端:应用程序诊断消息:用户类引发异常:java.lang.illegalaccesserror:尝试从com.amazonaws.services.dynamodbv2.datamodeling.dynamodbmappingsregistry类访问com.amazonaws.services.dynamodbv2.datamodeling.attributeencryptoramazonaws.services.dynamodbv2.datamodeling.attributeencryptor.getmodelclassmetadata(attributeencryptor。java:156)在com.amazonaws.services.dynamodbv2.datamodeling.attributeencryptor.transform(attributeencryptor。java:65)在com.amazonaws.services.dynamodbv2.datamodeling.dynamodbmapper.transformattributes(dynamodbmapper。java:2180)在com.amazonaws.services.dynamodbv2.datamodeling.dynamodbmapper.batchwrite(dynamodbmapper。java:1229)在com.amazonaws.services.dynamodbv2.datamodeling.abstractdynamodbmapper.batchsave(abstractdynamodbmapper。java:193)在com.amazon.payrolldatalakeemr.awsoperations.ddbooperations$.batchsaveinddb(ddbooperations。scala:40)
配置详细信息:

  1. AWSJavaSDKExternalRelease = 1.11.x;
  2. # Spark dependencies
  3. Spark-core = 2.2.1;
  4. Spark-sql = 2.2.1;
  5. DaxJavaClient = 1.0;
  6. ANTLR-Runtime = 3.5.x;
  7. DynamoDbGrammar = 1.0;
  8. Lombok = 1.16.x;
  9. LombokUtils = 1.1;
  10. Maven-com-amazonaws_aws-dynamodb-encryption-java = 1.x;

Map程序代码:

  1. def getDynamoDBMapper(region: String): DynamoDBMapper = {
  2. val cmkArn = "*****************************"
  3. val kms: AWSKMS = AWSKMSClientBuilder.standard().withRegion(region).build()
  4. val cmp: DirectKmsMaterialProvider = new DirectKmsMaterialProvider(kms, cmkArn)
  5. val encryptor: DynamoDBEncryptor = DynamoDBEncryptor.getInstance(cmp)
  6. val mapperConfig: DynamoDBMapperConfig = DynamoDBMapperConfig.builder.withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER).build
  7. new DynamoDBMapper(ddclient, mapperConfig, new AttributeEncryptor(encryptor))

}

r55awzrz

r55awzrz1#

添加spark属性后解析:--conf spark.driver.userclasspathfirst=true

相关问题