2015-09-08 1 views
0

В настоящее время журналы хранятся в DynamoDB. Мы хотим отфильтровать ненужные строки из этой таблицы и сохранить вывод в другой таблице (например, исключить строки, в которых поле «значение» содержит «бот», «питон», «запросы» и т. Д.).Как отфильтровать данные из DynamoDB с использованием Amazon Data Pipeline и Hive?

К этому моменту я придумал что-то вроде этого (шаблон AWS):

{ 
    "objects": [ 
    { 
     "name": "EmrClusterForBackup", 
     "coreInstanceType": "m1.medium", 
     "coreInstanceCount": "1", 
     "masterInstanceType": "m1.medium", 
     "amiVersion": "3.3.2", 
     "id": "EmrClusterForBackup", 
     "type": "EmrCluster", 
     "terminateAfter": "2 Hours" 
    }, 
    { 
     "occurrences": "1", 
     "period": "1 Day", 
     "name": "RunOnce", 
     "id": "DefaultSchedule", 
     "type": "Schedule", 
     "startAt": "FIRST_ACTIVATION_DATE_TIME" 
    }, 
    { 
     "name": "DDBExportFormat", 
     "id": "DDBExportFormat", 
     "type": "DynamoDBExportDataFormat" 
    }, 
    { 
     "directoryPath": "#{myOutputS3Loc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}", 
     "dataFormat": { 
     "ref": "DDBExportFormat" 
     }, 
     "name": "S3BackupLocation", 
     "id": "S3BackupLocation", 
     "type": "S3DataNode" 
    }, 
    { 
     "failureAndRerunMode": "CASCADE", 
     "schedule": { 
     "ref": "DefaultSchedule" 
     }, 
     "resourceRole": "DataPipelineDefaultResourceRole", 
     "role": "DataPipelineDefaultRole", 
     "pipelineLogUri": "s3://ti-labs-ml-data/logs/", 
     "scheduleType": "cron", 
     "name": "Default", 
     "id": "Default" 
    }, 
    { 
     "output": { 
     "ref": "S3BackupLocation" 
     }, 
     "input": { 
     "ref": "DDBSourceTable" 
     }, 
     "filterSql": "", 
     "name": "TableBackupActivity", 
     "id": "TableBackupActivity", 
     "runsOn": { 
     "ref": "EmrClusterForBackup" 
     }, 
     "type": "HiveCopyActivity", 
     "resizeClusterBeforeRunning": "true" 
    }, 
    { 
     "readThroughputPercent": "#{myDDBReadThroughputRatio}", 
     "dataFormat": { 
     "ref": "DDBExportFormat" 
     }, 
     "name": "DDBSourceTable", 
     "id": "DDBSourceTable", 
     "type": "DynamoDBDataNode", 
     "tableName": "#{myDDBTableName}" 
    } 
    ], 
    "parameters": [ 
    { 
     "description": "Output S3 folder", 
     "id": "myOutputS3Loc", 
     "type": "AWS::S3::ObjectKey" 
    }, 
    { 
     "default": "0.2", 
     "watermark": "Enter value between 0.1-1.0", 
     "description": "DynamoDB read throughput ratio", 
     "id": "myDDBReadThroughputRatio", 
     "type": "Double" 
    }, 
    { 
     "description": "DynamoDB table name", 
     "id": "myDDBTableName", 
     "type": "String" 
    } 
    ], 
    "values": { 
    "myDDBTableName": "TI-LABS-DDB-A", 
    "myDDBReadThroughputRatio": "0.2", 
    "myOutputS3Loc": "s3://ti-labs-ml-data/" 
    } 
} 

Однако я не понимаю, как запрос фильтра должен выглядеть (я пробовал один - это говорит о том, что ряд имеет только «Item», тогда как моя таблица имеет 2 поля - id и значение).

ответ

Смежные вопросы