CopyActivity
Copia dados de um local para outro. CopyActivity
oferece suporte a S3DataNode e SqlDataNode como entrada e saída, e a operação de cópia normalmente é executada registro a registro. No entanto, CopyActivity
fornece cópia do Amazon S3 para Amazon S3 de alto desempenho quando todas as condições a seguir são atendidas:
-
A entrada e a saída são S3DataNodes
-
O campo
dataFormat
é igual para a entrada e a saída
Se você fornecer arquivos de dados compactados como entrada e não indicar isso usando o campo compression
nos nós de dados do S3, CopyActivity
poderá falhar. Nesse caso, CopyActivity
não detecta corretamente o fim do caractere de gravação e ocorre falha na operação. Além disso, CopyActivity
oferece suporte à cópia de um diretório para outro e de um arquivo para um diretório, mas a cópia de gravação por gravação ocorre ao copiar um diretório para um arquivo. Por fim, CopyActivity
não oferece suporte à copia de arquivos do Amazon S3 de várias partes.
CopyActivity
tem limitações específicas para suporte a CSV. Ao usar um S3DataNode como entrada para CopyActivity
, você só pode ter uma variante Unix/Linux do formato de arquivo de dados CSV para os campos de entrada e saída do Amazon S3. A variante Unix/Linux requer o seguinte:
-
O separador precisa ser o caractere "," (vírgula).
-
Os registros não ficam entre aspas.
-
O caractere de escape padrão é o valor ASCII 92 (barra invertida).
-
O identificador de fim de registro é o valor ASCII 10 (ou "\n").
Os sistemas baseados no Windows geralmente usam uma sequência de caracteres diferente de fim de registro: um retorno de carro e um avanço de linha juntos (valor ASCII 13 e valor ASCII 10). Você precisa acomodar essa diferença usando um mecanismo adicional, como um script de pré-cópia para modificação de dados de entrada, para garantir que CopyActivity
possa detectar corretamente o final de um registro. Caso contrário, CopyActivity
apresentará falhas repetidamente.
Ao usar CopyActivity
para fazer exportações a partir de um objeto PostgreSQL do RDS para um formato de dados TSV, o caractere NULL padrão é \n.
Exemplo
Veja a seguir um exemplo deste tipo de objeto. Esse objeto faz referência a três outros objetos definidos por você no mesmo arquivo de definição de pipeline. CopyPeriod
é um objeto Schedule
e InputData
e OutputData
são objetos de nó de dados.
{ "id" : "S3ToS3Copy", "type" : "CopyActivity", "schedule" : { "ref" : "CopyPeriod" }, "input" : { "ref" : "InputData" }, "output" : { "ref" : "OutputData" }, "runsOn" : { "ref" : "MyEc2Resource" } }
Sintaxe
Campos de invocação de objetos | Descrição | Tipo de slot |
---|---|---|
schedule | Esse objeto é invocado durante a execução de um intervalo de programação. Os usuários precisam especificar uma referência de programação para outro objeto de modo a definir a ordem de execução de dependência desse objeto. Os usuários podem satisfazer esse requisito definindo explicitamente uma programação no objeto, por exemplo, ao especificar "schedule": {"ref": "DefaultSchedule"}. Na maioria dos casos, é melhor colocar a referência de programação no objeto de pipeline padrão para que todos os objetos herdem essa programação. Como alternativa, se o pipeline tiver uma árvore de programações (outras programações dentro de uma programação principal), os usuários poderão criar um objeto principal que tenha uma referência de programação. Para obter mais informações sobre o exemplo de configurações opcionais de programação, consulte https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html. | Objeto de referência, como “schedule”:{"ref":"myScheduleId"} |
Grupo obrigatório (um dos seguintes é obrigatório) | Descrição | Tipo de slot |
---|---|---|
runsOn | O recurso computacional para executar a atividade ou o comando. Por exemplo, uma instância do Amazon EC2 ou um cluster do Amazon EMR. | Objeto de referência, como “runsOn”:{"ref":"myResourceId"} |
workerGroup | O grupo de operadores. Isso é usado para tarefas de roteamento. Se você fornecer um valor de runsOn e workerGroup existir, workerGroup será ignorado. | String |
Campos opcionais | Descrição | Tipo de slot |
---|---|---|
attemptStatus | Status mais recente da atividade remota. | String |
attemptTimeout | Tempo limite para conclusão do trabalho remoto. Se configurada, uma atividade remota não concluída dentro do prazo definido poderá ser executada novamente. | Período |
dependsOn | Especifique a dependência em outro objeto executável. | Objeto de referência, como “dependsOn”:{"ref":"myActivityId"} |
failureAndRerunMode | Descreve o comportamento do nó do consumidor quando as dependências apresentam falhas ou são executadas novamente. | Enumeração |
input | A fonte de dados de entrada. | Objeto de referência, como “entrada”:{"ref":"myDataNodeId"} |
lateAfterTimeout | O tempo decorrido após o início do pipeline no qual o objeto deve ser concluído. Ele é acionado somente quando o tipo de programação não está definido como ondemand . |
Período |
maxActiveInstances | O número máximo de instâncias ativas simultâneas de um componente. Novas execuções não contam para o número de instâncias ativas. | Inteiro |
maximumRetries | Quantidade máxima de novas tentativas com falha. | Inteiro |
onFail | Uma ação a ser executada quando há falha no objeto atual. | Objeto de referência, como “onFail”:{"ref":"myActionId"} |
onLateAction | Ações que devem ser acionadas se um objeto ainda não foi agendado ou não foi concluído. | Objeto de referência, como “onLateAction”:{"ref":"myActionId"} |
onSuccess | Uma ação a ser executada quando o objeto atual é executado com êxito. | Objeto de referência, como “onSuccess”:{"ref":"myActionId"} |
output | A fonte de dados de saída. | Objeto de referência, como “output”:{"ref":"myDataNodeId"} |
parent | Pai do objeto atual a partir do qual os slots serão herdados. | Objeto de referência, como “parent”:{"ref":"myBaseObjectId"} |
pipelineLogUri | O URI do S3 (por exemplo, "s3://BucketName/Key/") para fazer upload de logs para o pipeline. | String |
precondition | Se desejar, você pode definir uma precondição. Um nó de dados não fica marcado como "READY" até que todas as precondições tenham sido atendidas. | Objeto de referência, como “precondition”:{"ref":"myPreconditionId"} |
reportProgressTimeout | Tempo limite para as chamadas sucessivas de trabalho remoto para reportProgress. Se definidas, as atividades remotas sem progresso para o período especificado podem ser consideradas como interrompidas e executadas novamente. | Período |
retryDelay | A duração do tempo limite entre duas novas tentativas. | Período |
scheduleType | O tipo de programação permite que você especifique se os objetos na sua definição de pipeline devem ser programados no início ou no final do intervalo. Programação com estilo de séries temporais significa que as instâncias são programadas no final de cada intervalo, e Programação com estilo Cron significa que as instâncias são programadas no início de cada intervalo. Uma programação sob demanda permite que você execute um pipeline uma vez por ativação. Isso significa que você não precisa clonar nem recriar o pipeline para executá-lo novamente. Se você usar uma programação sob demanda, ela precisará ser especificada no objeto padrão, além de ser a única scheduleType especificada para objetos no pipeline. Para usar pipelines sob demanda, basta chamar a operação ActivatePipeline para cada execução subsequente. Os valores são: cron, ondemand e timeseries. | Enumeração |
Campos de tempo de execução | Descrição | Tipo de slot |
---|---|---|
@activeInstances | Lista dos objetos da instância ativa agendados no momento. | Objeto de referência, como “activeInstances”:{"ref":"myRunnableObjectId"} |
@actualEndTime | Hora em que a execução deste objeto foi concluída. | DateTime |
@actualStartTime | Hora em que a execução deste objeto foi iniciada. | DateTime |
cancellationReason | O motivo do cancelamento, se esse objeto foi cancelado. | String |
@cascadeFailedOn | Descrição da cadeia de dependência na qual o objeto apresentou falha. | Objeto de referência, como “cascadeFailedOn”:{"ref":"myRunnableObjectId"} |
emrStepLog | Registros da etapa do EMR disponíveis somente nas tentativas de atividade do EMR. | String |
errorId | O ID do erro se esse objeto apresentou falha. | String |
errorMessage | A mensagem de erro se esse objeto apresentou falha. | String |
errorStackTrace | O rastreamento de pilha com erro se esse objeto apresentou falha. | String |
@finishedTime | A hora em que esse objeto terminou a execução. | DateTime |
hadoopJobLog | Registos de trabalho do Hadoop disponíveis nas tentativas de atividades baseadas em EMR. | String |
@healthStatus | O status de integridade do objeto que indica se houve sucesso ou falha na última instância concluída do objeto. | String |
@healthStatusFromInstanceId | ID do último objeto da instância concluído. | String |
@healthStatusUpdatedTime | Hora em que o status de integridade foi atualizado pela última vez. | DateTime |
hostname | O nome do host do cliente que capturou a tentativa da tarefa. | String |
@lastDeactivatedTime | A hora em que esse objeto foi desativado pela última vez. | DateTime |
@latestCompletedRunTime | Hora da última execução concluída. | DateTime |
@latestRunTime | Hora da última execução programada. | DateTime |
@nextRunTime | Hora da próxima execução a ser programada. | DateTime |
reportProgressTime | A última vez que a atividade remota relatou progresso. | DateTime |
@scheduledEndTime | Horário de término da programação para o objeto. | DateTime |
@scheduledStartTime | Horário de início da programação para o objeto. | DateTime |
@status | O status deste objeto. | String |
@version | A versão do pipeline com que o objeto foi criado. | String |
@waitingOn | Descrição da lista de dependências em que este objeto está aguardando. | Objeto de referência, como “waitingOn”:{"ref":"myRunnableObjectId"} |
Campos do sistema | Descrição | Tipo de slot |
---|---|---|
@error | Erro ao descrever o objeto malformado. | String |
@pipelineId | ID do pipeline ao qual este objeto pertence. | String |
@sphere | A esfera de um objeto denota seu lugar no ciclo de vida: os objetos componentes dão origem aos objetos de instância que executam os objetos de tentativa. | String |