Конвейер данных AWS - RedshiftCopyActvity - Redshift to S3 - Установить с разделителем канала - PullRequest
0 голосов
/ 21 января 2019

Я настроил конвейер данных, который выводит таблицу в файл S3 каждые четыре часа.Все работает как положено.Единственная проблема заключается в том, что этот файл используется для загрузки другой таблицы красного смещения, которая ищет файл S3 с разделителями в виде трубы для заполнения.У меня нет доступа к параметрам Serde этой таблицы, поэтому мне нужно, чтобы выходной файл S3 был разделен конвейером ("|").

Ниже приведен JSON, используемый для создания конвейера:

{
  "objects": [
    {
      "subnetId": "subnet",
      "resourceRole": "DefaultResourceRole",
      "role": "DefaultRole",
      "securityGroupIds": "someid",
      "instanceType": "m3.large",
      "name": "DefaultResource",
      "keyPair": "blah",
      "id": "ResourceId",
      "type": "Ec2Resource",
      "terminateAfter": "15 Minutes"
    },
    {
      "databaseName": "blah",
      "*password": "blahwithsymbols",
      "name": "DefaultDatabase",
      "id": "DatabaseId",
      "clusterId": "production",
      "type": "RedshiftDatabase",
      "username": "blahblah"
    },
    {
      "period": "4 Hours",
      "name": "Every 4 hours",
      "id": "DefaultSchedule",
      "type": "Schedule",
      "startAt": "FIRST_ACTIVATION_DATE_TIME"
    },
    {
      "failureAndRerunMode": "CASCADE",
      "schedule": {
        "ref": "DefaultSchedule"
      },
      "resourceRole": "ResourceRole",
      "role": "Role",
      "pipelineLogUri": "s3://logs.blah.blah",
      "scheduleType": "cron",
      "name": "Default",
      "id": "Default"
    },  
    {
      "output": {
        "ref": "S3DataNodeId"
      },
      "input": {
        "ref": "RedshiftDataNodeId"
      },
      "schedule": {
        "ref": "DefaultSchedule"
      },
      "onSuccess": {
        "ref": "SuccessNotify"
      },
      "onFail": {
        "ref": "FailureNotify"
      },
      "name": "Copy",
      "id": "RedshiftCopyActivityId",
      "runsOn": {
        "ref": "ResourceId"
      },
      "type": "RedshiftCopyActivity",
      "insertMode": "TRUNCATE"      
    },
    {
      "schedule": {
        "ref": "DefaultSchedule"
      },
      "database": {
        "ref": "DatabaseId"
      },
      "name": "DefaultRedshiftDataNode",
      "id": "RedshiftDataNodeId",
      "type": "RedshiftDataNode",
      "tableName": "blah"
    },
    {
      "schedule": {
        "ref": "DefaultSchedule"
      },
      "directoryPath": "s3://blah.com/blah/#{format(@scheduledStartTime,'YYYY')}/#{month(@scheduledStartTime)}",
      "name": "DefaultS3DataNode",
      "id": "S3DataNodeId",
      "type": "S3DataNode"
    },
    {
      "subject": "Load SUCCESS: #{node.@scheduledStartTime}",
      "name": "Load Success SNS",
      "id": "SuccessNotify",
      "message": "Successfully ran RedshiftCopyActivity #{node.name}.",
      "type": "SnsAlarm",
      "topicArn": "-"
    },  
    {
      "subject": "Load FAILURE: #{node.@scheduledStartTime}",
      "name": "Failed SNS",
      "id": "FailureNotify",
      "message": "FAILED: RedshiftCopyActivity #{node.name}.",
      "type": "SnsAlarm",
      "topicArn": "blah"
    }  
  ],
  "parameters": []
}

Нужно ли создавать раздел формата данных для разделителя или есть что-то вроде тега «разделителя» для узла s3?

Спасибо.

...