AWS Data Pipeline, извлекающий данные из DynamoDB, имеет другое количество файлов, чем указано в файле манифеста. - PullRequest
0 голосов
/ 06 марта 2019

Я извлек ~ 348 миллионов строк из DynamoDB, используя конвейер данных.Конвейер завершился без ошибок.

Я заметил, что количество файлов в корзине S3 не совпадает с количеством файлов, указанных в теге манифеста "записи".Каждый файл содержит 100 000 записей и, следовательно, 3479 файлов.В итоговом манифесте содержится 3469 файлов в теге «записи».

Кто-нибудь знает, почему?

Файл манифеста необходим для импорта файлов обратно в DynamoDB.Это производственные данные, и расхождение с 10 файлами может стоить нам 1 миллион строк.

1 Ответ

0 голосов
/ 08 марта 2019

ОК. Благодаря многочисленным исследованиям и поддержке я думаю, что решил эту проблему.Это связано со спекулятивным исполнением.По сути, если процесс не завершается вовремя, запускается новый процесс и ему предоставляется та же работа.Когда начальный процесс наконец завершается, вторичный процесс отменяется и не очень хорошо очищается после себя.Отключение этой «функции» решило мою проблему.

Для этого вам нужно будет создать собственное определение конвейера.К нему добавьте:

{
    "name": "disableSpeculativeExecution",
    "id": "disableSpeculativeExecution",
    "type": "EmrConfiguration",
    "classification": "mapred-site",
    "property": [
        {
            "ref": "disableSpeculativeExecutionForMapperTasks"
        },
        {
            "ref": "disableSpeculativeExecutionForMapperTasks"
        }
    ]
},
{
    "name": "disableSpeculativeExecutionForMapperTasks",
    "id": "disableSpeculativeExecutionForMapperTasks",
    "type": "Property",
    "key": "mapreduce.map.speculative",
    "value": "false"
},
{
    "name": "disableSpeculativeExecutionForReducerTasks",
    "id": "disableSpeculativeExecutionForReducerTasks",
    "type": "Property",
    "key": "mapreduce.reduce.speculative",
    "value": "false"
},

Затем внутри определения EMRClusterForBackup добавьте жирную ссылку:

"configuration": {"ref": "disableSpeculativeExecution"}

{
    "name": "EmrClusterForBackup",
    "coreInstanceCount": "1",
    "coreInstanceType": "m3.xlarge",
    "releaseLabel": "emr-5.13.0",
    "masterInstanceType": "m3.xlarge",
    "id": "EmrClusterForBackup",
    "region": "#{myDDBRegion}",
    "type": "EmrCluster",
    "terminateAfter" : "12 Hours",
    "configuration": {
        "ref": "disableSpeculativeExecution"
    }
},
...