選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

從 Amazon EMR 載入資料 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從 Amazon EMR 載入資料

您可以使用 COPY 命令從 Amazon EMR 叢集平行載入資料,而叢集設定為以固定寬度檔案、字元分隔檔案、CSV 檔案或 JSON 格式檔案的形式,將文字檔案寫入叢集的 Hadoop 分散式檔案系統 (HDFS)。

從 Amazon EMR 載入資料的程序

本節會逐步引導您完成從 Amazon EMR 叢集載入資料的程序。下列小節提供必須完成每個步驟的詳細資訊。

步驟 1:設定 IAM 許可

建立 Amazon EMR 叢集和執行 Amazon Redshift COPY 命令的使用者必須具備必要的許可。

設定 IAM 許可
  1. 為將建立 Amazon EMR 叢集的使用者新增下列許可。

    ec2:DescribeSecurityGroups ec2:RevokeSecurityGroupIngress ec2:AuthorizeSecurityGroupIngress redshift:DescribeClusters
  2. 為將執行 COPY 命令的 IAM 角色或使用者新增下列許可。

    elasticmapreduce:ListInstances
  3. 將下列許可新增至 Amazon EMR 叢集的 IAM 角色。

    redshift:DescribeClusters

步驟 2:建立 Amazon EMR 叢集。

COPY 命令會從 Amazon EMR Hadoop 分散式檔案系統 (HDFS) 上的檔案載入資料。建立 Amazon EMR 叢集時,請設定叢集以輸出資料檔案至叢集的 HDFS。

建立 Amazon EMR 叢集
  1. 在與 Amazon Redshift 叢集相同的 AWS 區域中建立 Amazon EMR 叢集。

    如果 Amazon Redshift 叢集位於 VPC 中,Amazon EMR 叢集必須位在相同的 VPC 群組。如果 Amazon Redshift 叢集使用 EC2-Classic 模式 (亦即,不在 VPC 中),Amazon EMR 叢集也必須使用 EC2-Classic 模式。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的在虛擬私有雲端 (VPC) 中管理叢集

  2. 設定叢集以將資料檔案輸出至叢集的 HDFS。HDFS 檔案名稱不能包括星號 (*) 或問號 (?)。

    重要

    檔案名稱不能包括星號 (*) 或問號 (?)。

  3. 針對 Amazon EMR 叢集組態中的自動終止選項指定,以便叢集在 COPY 命令執行時保持可用狀態。

    重要

    如果 COPY 完成之前有任何資料檔案變更或刪除,可能會發生非預期的結果,COPY 操作也可能失敗。

  4. 請記下叢集 ID 和主要公有 DNS (主控叢集的 Amazon EC2 執行個體端點)。您將在稍後的步驟中使用該資訊。

步驟 3:擷取 Amazon Redshift 叢集公有金鑰和叢集節點 IP 地址

您將使用每個叢集節點的 IP 地址來設定主機安全群組,以允許使用這些 IP 地址從您的 Amazon Redshift 叢集存取。

使用主控台擷取您叢集的 Amazon Redshift 叢集公有金鑰和叢集節點 IP 地址
  1. 存取 Amazon Redshift 管理主控台。

  2. 在導覽窗格中,選擇叢集連結。

  3. 從清單選取您的叢集。

  4. 找到 SSH Ingestion Settings (SSH 擷取設定) 群組。

    記下 Cluster Public Key (叢集公有金鑰)Node IP addresses (節點 IP 地址)。您將在稍後的步驟中用到它們。

    SSH 擷取設定群組的螢幕擷取畫面,顯示叢集公有金鑰和節點 IP 地址。

    您將使用步驟 3 的私有 IP 地址來設定 Amazon EC2 主機以接受來自 Amazon Redshift 的連線。

若要使用 Amazon Redshift CLI 來擷取叢集的叢集公有金鑰和叢集節點 IP 地址,請執行 describe-clusters 命令。例如:

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

回應將包含 ClusterPublicKey 值和私有和公有 IP 地址的清單,類似於下列:

{ "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", ... ... }

若要使用 Amazon Redshift API 來擷取叢集的叢集公有金鑰和叢集節點 IP 地址,請使用 DescribeClusters 動作。如需詳細資訊,請參閱《Amazon Redshift CLI 指南》中的 describe-clusters 或《Amazon Redshift API 指南》中的 DescribeClusters

步驟 4:將 Amazon Redshift 叢集公有金鑰新增至每個 Amazon EC2 主機的授權金鑰檔案

您可以將叢集公有金鑰新增至所有 Amazon EMR 叢集節點的每個主機的授權金鑰檔案,以便主機識別 Amazon Redshift 並接受 SSH 連線。

將 Amazon Redshift 叢集公有金鑰新增至主機的授權金鑰檔案
  1. 使用 SSH 連線存取主機。

    如需使用 SSH 連接至執行個體的詳細資訊,請參閱《Amazon EC2 使用者指南》中的連接至您的執行個體

  2. 從主控台或從 CLI 回應文字複製 Amazon Redshift 公有金鑰。

  3. 將公有金鑰的內容複製和貼上至主機上的 /home/<ssh_username>/.ssh/authorized_keys 檔案。包括完整字串,包括字首 "ssh-rsa" 和字尾 "Amazon-Redshift"。例如:

    ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift

步驟 5:設定主機以接受所有 Amazon Redshift 叢集的 IP 地址

若要允許對主機執行個體的輸入流量,請編輯安全群組,並為每個 Amazon Redshift 叢集節點新增一個輸出規則。針對類別,對連接埠 22 上的 TCP 通訊協定選取 SSH。針對來源,輸入您在 步驟 3:擷取 Amazon Redshift 叢集公有金鑰和叢集節點 IP 地址 中擷取的 Amazon Redshift 叢集節點私有 IP 地址。如需將規則新增至 Amazon EC2 安全群組的相關資訊,請參閱《Amazon EC2 使用者指南》中的授權執行個體的傳入流量

步驟 6:執行 COPY 命令以載入資料

執行 COPY 命令以連線至 Amazon EMR 叢集,並將資料載入至 Amazon Redshift 資料表。Amazon EMR 叢集必須繼續執行,直到 COPY 命令完成。例如,請勿將叢集設定為自動終止。

重要

如果 COPY 完成之前有任何資料檔案變更或刪除,可能會發生非預期的結果,COPY 操作也可能失敗。

在 COPY 命令中,指定 Amazon EMR 叢集 ID 和 HDFS 檔案路徑和檔案名稱。

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

您可以在檔案名稱引數中使用萬用字元星號 (*) 和問號 (?)。例如,part* 會載入檔案 part-0000part-0001,以此類推。如果僅指定資料夾名稱,COPY 會嘗試載入該資料夾中的所有檔案。

重要

如果使用萬用字元或只使用資料夾名稱,請確認不會載入不需要的檔案,否則 COPY 命令將會失敗。例如,某些程序可能將日誌檔案寫入至輸出資料夾。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。