Hive를 사용하여 Amazon DynamoDB 테이블을 Amazon EMR로 가져오려고 하면 다음과 비슷한 오류 메시지가 나타납니다.

The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code

이것은 400 오류이며, 가장 흔한 원인은 잘못된 스키마, 데이터 손상, 데이터 불일치 등입니다. 요청한 매핑 템플릿 구조가 Amazon DynamoDB 키 구조와 일치하는지 확인하십시오. 자세한 내용은 잘못된 DynamoDB 키 매핑을 참조하십시오.

가장 흔한 원인을 제거한 후에도 오류 메시지가 나타나면 Hive 애플리케이션 로그를 확인해 보십시오.​ 로그는 Amazon EMR 클러스터에 있는 마스터 노드의 /mnt/var/log/hive 디렉터리에 있습니다. 다음과 같은 로그를 찾아보십시오.

2018-02-01 08:17:27,782 [INFO] [TezChild] |s3n.S3NativeFileSystem|: Opening 's3://bucket/folder/ddb_hive.sql' for reading
2018-02-01 08:17:27,817 [INFO] [TezChild] |exec.Utilities|: PLAN PATH = hdfs://ip-172-31-xx-xxx.ec2.internal:8020/tmp/hive/hadoop/e27c0150-663a-4935-ba7c-a321a6b077bd/hive_2018-02-01_08-14-39_999_8671394604140937828-1/hadoop/_tez_scratch_dir/208eda2e-6ec4-40da-a3b0-79db50920ec4/map.xml
2018-02-01 08:17:27,817 [INFO] [TezChild] |lazy.LazyStruct|: Missing fields! Expected 3 fields but only got 2! Ignoring similar problems.

이 예제에서 Hive 스크립트는 Amazon Simple Storage Service(Amazon S3)의 입력 파일과 동일한 위치에 있습니다. 가져오기 작업은 이 Hive 스크립트를 가져오기 작업에 사용하는 것은 물론 데이터 형태로 DynamoDB 테이블로 보냅니다. 이 문제를 해결하려면 Hive 스크립트를 Amazon S3의 다른 위치로 옮기십시오.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2018년 7월 17일