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

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

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

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

建立外部結構描述與外部資料表
  1. 若要建立外部結構描述,請將下列命令ARN中的IAM角色取代為ARN您在步驟 1 中建立的角色。然後在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. 若要建立外部資料表,請執行下列CREATEEXTERNALTABLE命令。

    注意

    您的叢集和 Amazon S3 儲存貯體必須位於相同的 AWS 區域。對於此範例CREATEEXTERNALTABLE命令,包含範例資料的 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 複製命令的輸出會確認檔案已複製到 bucket-name 在你想要的 AWS 區域。

    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');