步驟 3:建立外部結構描述與外部資料表 - Amazon Redshift

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

步驟 3:建立外部結構描述與外部資料表

在外部結構描述中建立外部資料表。外部結構描述參考外部資料目錄中的資料庫,並提供授權您的叢集代表您存取 Amazon S3 的 IAM 角色 ARN。您可以在 Amazon Athena 資料目錄或 Apache Hive 中繼存放區 (例如 Amazon EMR) 中建立外部資料庫。 AWS Glue Data Catalog在此範例中,當您建立外部結構描述 Amazon Redshift 時,在 Amazon Athena 資料目錄中建立外部資料庫。如需詳細資訊,請參閱 建立 Amazon Redshift Spectrum 外部結構描述

建立外部結構描述與外部資料表
  1. 如要建立外部結構描述,請將以下命令中的 IAM 角色 ARN 替換為您在步驟 1 中建立的角色 ARN。然後,在您的 SQL 用戶端中執行命令。

    create external schema myspectrum_schema from data catalog database 'myspectrum_db' iam_role 'arn:aws:iam::123456789012:role/myspectrum_role' create external database if not exists;
  2. 若要建立外部資料表,請執行以下 CREATE EXTERNAL TABLE 命令。

    注意

    您的叢集和 Amazon S3 儲存貯體必須位於相同的 AWS 區域。在此範例中建立外部表命令,包含範例資料的 Amazon S3 儲存貯體位於美國東部 (維吉尼亞北部) AWS 區域。若要查看來源資料,請下載 sales_ts.000 檔案。。

    您可以修改此範例,以便在其他範例中執行 AWS 區域。在您想要的位置建立 Amazon S3 儲存貯體 AWS 區域。使用 Amazon S3 複製命令複製銷售資料。然後將範例 CREATE EXTERNAL TABLE 命令中的位置選項更新到您的儲存貯體。

    aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://bucket-name/tickit/spectrum/sales/ --copy-props none --recursive

    Amazon S3 複製命令的輸出會確認檔案已複製到所需 AWS 區域的 bucket-name

    copy: s3://redshift-downloads/tickit/spectrum/sales/sales_ts.000 to s3://bucket-name/tickit/spectrum/sales/sales_ts.000
    create external table myspectrum_schema.sales( salesid integer, listid integer, sellerid integer, buyerid integer, eventid integer, dateid smallint, qtysold smallint, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp) row format delimited fields terminated by '\t' stored as textfile location 's3://redshift-downloads/tickit/spectrum/sales/' table properties ('numRows'='172000');