В настоящее время журналы хранятся в 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 и значение).