Como descarregar dados do Redshift para S3?


8

Eu tenho tentado descarregar alguns dados do Redshift para o bucket S3. Exceto que eu estou recebendo o seguinte erro:

Operação inválida da Amazon: não é possível descartar o portal ativo; [Estado SQL = XX000, código de erro do banco de dados = 500310]

Para observar que o Redshift e o S3 estão em 2 buckets diferentes, especifiquei a região na descarga.

Eu tentei procurar, menciona que não posso largar a mesa.

Por isso, criei uma tabela de "teste" que tenho 100% de certeza de que não está conectada a nenhuma visualização ou outra, mas ainda assim recebo o mesmo erro.

Tentei também solucionar problemas através do AWSQuickSolutions: A tabela Redshift não pode ser descartada ou a tabela suspensa trava, exceto que eu não tenho acesso svv_table_info.

Existe alguma maneira de fazer o descarregamento?


Estou confuso. Você fala sobre querer UNLOAD tabela (o que significa exportar os dados para o S3), mas depois fala sobre descartar a tabela. Qual operação você deseja executar?
John Rotenstein

2
Quero fazer uma cópia dos dados que tenho no redshift para S3, para que eu possa baixar o csv. Não posso fazê-lo no ambiente de trabalho SQL, pois minha memória não permite. Eu procurei online que a descarga faria isso. Exceto que recebo o erro que publiquei. Quando procuro o erro, ele fala sobre quedas de tabelas, o que me confunde.
ivb1

Você está usando o UNLOADcomando Redshift ? (Você pode nos mostrar seu comando?) Funciona se você descarregar em um balde na mesma região? Descarregar não tem nada a ver com o descarte de tabelas.
John Rotenstein

2
Isso está acontecendo para mim também. Eu trabalhei com isso executando o UNLOAD a partir de um aplicativo diferente, no meu caso, o Query Editor no console do Redshift.
Nofinator 24/10/19

1
Eu fui bem-sucedido ao reiniciar a sessão
darekarsam 18/11/19

Respostas:


2

relatando a resposta @nofinator, pois funcionou para mim e pode ser útil para outra pessoa também:

Ao executar o UNLOAD a partir de um aplicativo diferente, no meu caso, o Query Editor no Redshift Console, resolveu a exceção Amazon Invalid operation: cannot drop active portal


1

OK, então eu tive o mesmo problema. Nenhuma das soluções conhecidas se aplica ao meu problema porque:

1) O cluster estava na mesma região que o bucket S3 que eu criei

2) Tentei executar o comando UNLOAD via python, cli e redshift com os mesmos resultados.

3) Tentei adicionar uma política de bucket para a função redshift

4) Tentei executar o comando unload usando for arns (a função redshift e a função s3)

Finalmente, consegui que funcionasse. O que mudou? Agora eu estava diretamente na rede da minha empresa, em vez de usar a VPN, que foi quando tive esse problema.

O que finalmente funcionou para mim:

UNLOAD ('SELECT * FROM table where EXTRACT(YEAR FROM order_datetime_utc )=2019')   
              to 's3://bucket/' 
              REGION 'us-east-1'
                iam_role 'arn:aws:iam::0000000000:role/RedshiftCopyUnload,arn:aws:iam::0000000000:role/S3Access'
              parallel off
              delimiter as '\t' 
gzip;

0

Eu tive o mesmo problema ontem. Pelo menos no meu incidente, houve um set-2 no Data-Warehouse. Eu uso o Amazon DWP usado pelo varejo da Amazon, portanto, não tenho certeza se esse é o mesmo serviço usado pela AWS.

tldr; É possível que este seja um problema de servidor no provedor do desvio para o vermelho.


0

Eu tive esse problema depois de modificar as permissões do IAM na função. Infelizmente, tive que reiniciar o cluster e, em seguida, meu comando UNLOAD funcionou.


0

Não sei o que exatamente causou esse erro, mas estava recebendo após uma falha na descarga.

Desconecto, reconecto meu cliente sql e o faço funcionar. Não é super conveniente, mas melhor do que reiniciar o cluster.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.