Caricamento di dati da Amazon EMR - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Caricamento di dati da Amazon EMR

È possibile utilizzare il comando COPY per caricare dati in parallelo da un cluster Amazon EMR configurato per scrivere file di testo nel File system distribuito Hadoop (HDFS) del cluster sotto forma di file a larghezza fissa, delimitati da caratteri, CSV o formattati JSON.

Processo per il caricamento dei dati da Amazon EMR

In questa sezione viene illustrato il processo di caricamento dei dati da un cluster Amazon EMR. Le sezioni seguenti forniscono le informazioni dettagliate necessarie per completare ogni fase.

Fase 1: configurazione delle autorizzazioni IAM

Gli utenti che creano il cluster Amazon EMR ed eseguono il comando COPY di Amazon Redshift devono disporre delle autorizzazioni necessarie.

Per configurare le autorizzazioni IAM
  1. Aggiungi le seguenti autorizzazioni per l'utente che creerà il cluster Amazon EMR.

    ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
  2. Aggiungi le seguenti autorizzazioni per l'utente o il ruolo IAM che eseguirà il comando COPY.

    elasticmapreduce:ListInstances
  3. Aggiungere le seguenti autorizzazioni al ruolo IAM del cluster Amazon EMR.

    redshift:DescribeClusters

Fase 2: Creazione di un cluster Amazon EMR

Il comando COPY carica i dati dai file nell'file di sistema distribuito Hadoop (HDFS) di Amazon EMR. Quando si crei il cluster Amazon EMR, configurare il cluster per i file di dati di output nell'HDFS del cluster.

Come creare un cluster Amazon EMR
  1. Creare un cluster Amazon EMR nella stessa regione AWS del cluster Amazon Redshift.

    Se il cluster Amazon Redshift si trova in un VPC, il cluster Amazon EMR dovrà trovarsi nello stesso gruppo VPC. Se il cluster Amazon Redshift utilizza la modalità EC2-Classic (cioè, non si trova in un VPC), anche il cluster Amazon EMR dovrà utilizzare la modalità EC2-Classic. Per ulteriori informazioni, consulta Gestione dei cluster nel cloud privato virtuale (VPC) nella Guida alla gestione di Amazon Redshift.

  2. Configurare il cluster per i file di dati di output nell'HDFS del cluster. I nomi dei file HDFS non devono contenere asterischi (*) o punti interrogativi (?).

    Importante

    I nomi dei file non devono contenere asterischi (*) o punti interrogativi (?).

  3. Specificare No per l'opzione Termina automaticamente nella configurazione del cluster Amazon EMR in modo che il cluster rimanga disponibile mentre viene eseguito il comando COPY.

    Importante

    Se uno qualsiasi dei file di dati viene modificato o cancellato prima del completamento dell'operazione di COPY, si potrebbero ottenere risultati imprevisti o l'operazione di COPY potrebbe fallire.

  4. Prendi nota dell'ID e del DNS pubblico principale del cluster (l'endpoint per l'istanza Amazon EC2 che ospita il cluster). Queste informazioni saranno utili per le fasi successive.

Fase 3: Recupero degli indirizzi IP dei nodi del cluster e della chiave pubblica del cluster Amazon Redshift

Sarà utilizzato l'indirizzo IP per ciascun nodo del cluster per configurare i gruppi di sicurezza dell'host in modo da consentire l'accesso dal cluster Amazon Redshift utilizzando questi indirizzi IP.

Come recuperare la chiave pubblica del cluster Amazon Redshift e gli indirizzi IP dei nodi del cluster tramite la console
  1. Accedere alla console di gestione di Amazon Redshift.

  2. Nel riquadro di navigazione scegli Clusters (Cluster).

  3. Selezionare il cluster dall'elenco.

  4. Individuare il gruppo SSH Ingestion Settings (Impostazioni di inserimento SSH).

    Prendere nota dei valori di Cluster Public Key (Chiave pubblica del cluster) e Node IP addresses (Indirizzi IP del nodo). Queste informazioni saranno utili per le fasi successive.

    Screenshot del gruppo Impostazioni di inserimento SSH con Chiave pubblica del cluster e Indirizzi IP dei nodi.

    Saranno utilizzati gli indirizzi IP privati nella fase 3 per configurare l'host Amazon EC2 affinché accetti la connessione da Amazon Redshift.

Per recuperare la chiave pubblica del cluster e gli indirizzi IP dei nodi del cluster tramite la CLI di Amazon Redshift, emettere il comando describe-clusters. Ad esempio:

aws redshift describe-clusters --cluster-identifier <cluster-identifier>

La risposta includerà un valore ClusterPublicKey e l'elenco di indirizzi IP privati e pubblici, simile al seguente:

{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }

Per recuperare la chiave pubblica del cluster e gli indirizzi IP dei nodi del cluster per il cluster con l'API di Amazon Redshift, utilizzare l'operazione DescribeClusters. Per ulteriori informazioni, consultare describe-clusters nella Guida alla CLI di Amazon Redshift o DescribeClusters nella Guida API di Amazon Redshift.

Fase 4: Aggiunta della chiave pubblica del cluster Amazon Redshift a ciascun file di chiavi autorizzate dell'host Amazon EC2

Aggiungere la chiave pubblica del cluster a ciascun file delle chiavi autorizzate dell'host per tutti i nodi del cluster Amazon EMR in modo che gli host riconoscano Amazon Redshift e accettino la connessione SSH.

Come aggiungere la chiave pubblica del cluster Amazon Redshift al file di chiavi autorizzate di ciascun host
  1. Accedere all'host tramite una connessione SSH.

    Per ulteriori informazioni sulla connessione a un'istanza che utilizza SSH, consultare Connessione all'istanza nella Guida per l'utente di Amazon EC2.

  2. Copiare la chiave pubblica di Amazon Redshift dalla console o dal testo di risposta della CLI.

  3. Copiare e incollare i contenuti della chiave pubblica nel file /home/<ssh_username>/.ssh/authorized_keys nell'host. Includere la stringa completa, compreso il prefisso "ssh-rsa " e il suffisso "Amazon-Redshift". Ad esempio:

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

Fase 5: Configurazione degli host affinché accettino tutti gli indirizzi IP del cluster Amazon Redshift

Per consentire il traffico in entrata verso le istanze dell'host, modificare il gruppo di sicurezza e aggiungere una regola in entrata per ciascun nodo del cluster Amazon Redshift. In Type (Tipo), seleziona SSH con il protocollo TCP sulla porta 22. In Source (Origine), inserisci gli indirizzi IP privati dei nodi cluster di Amazon Redshift recuperati in Fase 3: Recupero degli indirizzi IP dei nodi del cluster e della chiave pubblica del cluster Amazon Redshift. Per informazioni sull'aggiunta di regole a un gruppo di sicurezza Amazon EC2, consultare Autorizzazione del traffico in entrata per le istanze nella Guida per l'utente di Amazon EC2.

Fase 6. esecuzione del comando COPY per il caricamento di dati

Eseguire un comando COPY per effettuare la connessione al cluster Amazon EMR e caricare i dati in una tabella Amazon Redshift. Il cluster Amazon EMR deve continuare a funzionare fino al completamento del comando COPY. Ad esempio, non configurare la terminazione automatica del cluster.

Importante

Se uno qualsiasi dei file di dati viene modificato o cancellato prima del completamento dell'operazione di COPY, si potrebbero ottenere risultati imprevisti o l'operazione di COPY potrebbe fallire.

Nel comando COPY, specificare l'ID cluster Amazon EMR e il percorso del file HDFS e il nome del file.

COPY sales FROM 'emr://myemrclusterid/myoutput/part*' CREDENTIALS IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

È possibile utilizzare i caratteri jolly asterisco (*) e punto interrogativo (?) come parte dell'argomento del nome file. Ad esempio, part* carica i file part-0000, part-0001 e così via. Se specifichi solo il nome di una cartella, COPY tenta di caricare tutti i file nella cartella.

Importante

Se utilizzi caratteri jolly o solo il nome della cartella, verifica che non vengano caricati file indesiderati o che il comando COPY fallisca. Ad esempio, alcuni processi potrebbero scrivere un file di log nella cartella di output.