我遵循了这个文件: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)
配置详细信息:
AWSJavaSDKExternalRelease = 1.11.x;
# Spark dependencies
Spark-core = 2.2.1;
Spark-sql = 2.2.1;
DaxJavaClient = 1.0;
ANTLR-Runtime = 3.5.x;
DynamoDbGrammar = 1.0;
Lombok = 1.16.x;
LombokUtils = 1.1;
Maven-com-amazonaws_aws-dynamodb-encryption-java = 1.x;
Map程序代码:
def getDynamoDBMapper(region: String): DynamoDBMapper = {
val cmkArn = "*****************************"
val kms: AWSKMS = AWSKMSClientBuilder.standard().withRegion(region).build()
val cmp: DirectKmsMaterialProvider = new DirectKmsMaterialProvider(kms, cmkArn)
val encryptor: DynamoDBEncryptor = DynamoDBEncryptor.getInstance(cmp)
val mapperConfig: DynamoDBMapperConfig = DynamoDBMapperConfig.builder.withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER).build
new DynamoDBMapper(ddclient, mapperConfig, new AttributeEncryptor(encryptor))
}
1条答案
按热度按时间r55awzrz1#
添加spark属性后解析:--conf spark.driver.userclasspathfirst=true