Amazon EMR에서 Hive를 사용하여 DynamoDB 테이블을 가져올 때 발생하는 “Provided key element doesn’t match the schema” 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

Apache Hive를 사용하여 Amazon DynamoDB 테이블을 Amazon EMR로 가져오면 “Provided key element doesn’t match the schema” 오류가 발생합니다.

해결 방법

잘못된 스키마, 손상된 데이터 또는 일치하지 않는 데이터가 있는 경우 다음과 같은 오류가 나타날 수 있습니다.

"The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: #ABC###########)"

잘못된 스키마, 손상된 데이터 또는 일치하지 않는 데이터로 인해 오류가 발생하지 않았다면 Hive 애플리케이션 로그를 확인하십시오. Hive 애플리케이션 로그를 찾으려면 Amazon EMR 클러스터의 프라이머리 노드에 연결하고 /mnt/var/log/hive 디렉터리로 이동합니다.

로깅을 활성화한 경우 Amazon Simple Storage Service(Amazon S3)에서 로그를 찾을 수 있습니다. s3://log-location/cluster-id/node/primary-instance-id/applications/hive와 비슷한 경로를 사용하십시오.

로그 예시:

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:565)
at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:86)
... 17 more
Caused by: java.lang.RuntimeException: com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: 0FF3KB36M2SJD8E79BUPOUP943VV4KQNSO5AEMVJF66Q9ASUAAJG)

오류 메시지에 있는 행인 **{"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}**은 Hive 스크립트의 일부입니다. 이 Hive 스크립트는 입력 파일과 동일한 Amazon S3 위치에 있습니다. 가져오기 작업은 Hive 스크립트를 DynamoDB 테이블에 데이터로 전송하고 이를 가져오기 작업에 사용합니다. 이 문제를 해결하려면 Hive 스크립트를 다른 Amazon S3 위치로 이동하십시오.

관련 정보

Amazon EMR 로그 파일 보기

AWS 공식
AWS 공식업데이트됨 2달 전