將資料湖資料表新增至資料共用 - Amazon Redshift

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

將資料湖資料表新增至資料共用

透過資料共用,資料生產者可以安全地與相同 AWS 帳戶或不同帳戶中的消費者共用精細的資料庫物件,例如結構描述和資料表。生產者也可以跨區域共用物件。本主題說明如何將物件從資料湖,特別是從 AWS Glue 資料目錄新增至資料共用。它涵蓋兩個使用案例:

  • 將繫結性較晚的檢視新增至從資料湖參考資料表的資料共用 – 這對消費者來說很方便,因為初步組態,例如定義外部來源資料的許可,例如使用 Lake Formation,可能已經完成。另一個好處是新增至資料共用的檢視可以從資料湖使用 Redshift 原生資料表聯結資料表。

  • 直接從外部結構描述將資料表新增至資料共用 – 這可讓沒有額外圖層或邏輯的消費者使用資料湖中的物件。消費者可以查詢資料表,或將其與消費者上的資料表聯結。

在您使用 CREATE EXTERNAL SCHEMA 從 Redshift 中的 AWS 資料目錄中參考資料表後,這些案例就會適用。 AWS 資料目錄中的任何資料表都可以是來源。

注意

您新增至資料共用的資料湖資料表可包含向 Lake Formation 註冊的資料表和 AWS Glue 資料目錄資料表。

建立外部結構描述和外部資料表

您可以建立外部結構描述和外部資料表,以便將它們新增至以下各節中的資料共用。這些是初步步驟。如果您已完成此操作,可以略過本節。

  1. 在生產者上,建立參考 Amazon S3 中存放之資料湖資料的外部結構描述。外部結構描述參考 AWS Glue Data Catalog。範例中的角色和區域為範例:

    CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG DATABASE 'glue_database_name' IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role' REGION 'us-east-1';
  2. 在外部結構描述中建立資料湖資料表。

    CREATE EXTERNAL TABLE external_schema_name.sales( salesid INTEGER, sellerid INTEGER, buyerid INTEGER, saledate DATE, pricepaid DECIMAL(8,2)) ROW FORMAT delimited FIELDS TERMINATED BY '\t' STORED AS textfile LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';

    範例包含 LOCATION。其格式必須是 s3://{bucket_name}/{folder}/,其中指定 資料夾。資料夾的長度必須至少有一個字元。您可以選擇包含子資料夾。若要查看在資料湖中建立資料表的其他範例,請參閱 CREATE EXTERNAL TABLE 的範例

    注意

    只有生產者上的 IAM 角色在資料表上具有 SELECT 存取權的資料表才支援共用。

將參考資料湖資料表的繫結後期檢視新增至資料共用

當您根據 AWS 資料目錄中的外部結構描述建立資料表,並想要將它們新增至資料共用時,最常見的方法是新增參考您建立之資料表的 Redshift 近期繫結檢視,其中包含來自資料湖的資料。下列程序顯示步驟:

  1. 建立繫結性較晚的檢視,參考您先前建立的外部資料表:

    CREATE VIEW lbv AS select * from external_schema_name.sales, other_schema.t1 WITH NO SCHEMA BINDING;
  2. 將檢視結構描述新增至資料共用。這是包含繫結後期檢視的本機結構描述。

    ALTER DATASHARE dsx_datashare ADD SCHEMA public;
  3. 將包含近期繫結檢視所參考資料表的結構描述新增至資料共用。在新增至資料共用的檢視中參考的任何基礎資料表都需要新增結構描述,無論結構描述是否包含本機資料庫物件或來自資料湖的物件。請注意,您必須先新增此結構描述,才能新增繫結後期檢視。

    ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name; ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema;
  4. 使用 SQL 命令將檢視新增至資料共用。請注意,資料表名稱包含結構描述字首。

    ALTER DATASHARE my_datashare ADD TABLE public.lbv;
  5. 確認檢視和結構描述已成功新增至資料共用:

    SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
  6. 取用者管理員會從資料共用建立資料庫,然後將用量授予取用者使用者。

完成這些步驟後,可存取資料共用檢視的資料庫取用者使用者可以查詢資料。

將資料湖資料表直接新增至資料共用

在外部結構描述中將資料表新增至資料共用類似於新增檢視。這適用於消費者想要以原始狀態查詢資料湖資料表,或消費者想要將其加入消費者資料倉儲中的資料表的情況。以下步驟說明如何使用 SQL 將資料湖資料表新增至資料共用。

  1. 建立外部結構描述和外部資料表,如本主題的第一節所述。

  2. 探索外部結構描述中的現有資料表,以確認您建立的資料表可用:

    SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name';
  3. 將外部結構描述新增至資料共用:

    ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name;
  4. 將外部資料表新增至資料共用。請注意,資料表名稱包含結構描述字首:

    ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales;
  5. 確認資料表已成功新增至資料共用:

    SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';

    如需更詳細的說明,請參閱共用 AWS 帳戶中資料的讀取存取權

  6. 在接收共用資料的資料庫取用者上,管理員會建立資料共用的關聯,讓使用者可以查詢共用資料表。如需如何執行此步驟的詳細資訊,請參閱以取用者身分管理其他帳戶的資料共用

管理員完成這些步驟後,取用者上的資料庫使用者可以撰寫查詢,從共用資料表擷取資料,並將其與取用者上的其他資料表聯結。

將資料湖物件新增至資料共用的用量備註

當您使用資料共用中資料湖的資料表和檢視時,需要注意幾個項目:

  • 使用 記錄 AWS CloudTrail - 資料生產者帳戶可以在透過資料共用共用的資料湖資料表存取時,使用 AWS CloudTrail 日誌進行稽核:

    • 使用日誌資料控制資料存取 – CloudTrail 會記錄存取共用資料表的人員詳細資訊,包括 Redshift 資料共用生產者和取用者。識別符可在 AssumeRole CloudTrail 日誌下的 ExternalId 欄位中使用。資料擁有者可以透過 動作設定 IAM 政策中資料存取的其他限制。如需透過政策定義資料存取的詳細資訊,請參閱存取第三方擁有 AWS 的帳戶

  • 安全與取用者許可 – 對於 Lake Formation 註冊資料表,Amazon S3 資源由 Lake Formation 保護,並使用 Lake Formation 提供的憑證提供。

將資料湖物件新增至資料共用的帳單考量

下列詳細說明如何在資料共用中存放和掃描資料湖物件的成本屬性:

  • 當消費者從資料湖查詢共用物件時,掃描成本會向消費者收取。

    • 當取用者是佈建叢集時,Redshift 會使用 Redshift Spectrum 掃描 Amazon S3 資料。因此,Spectrum 成本會計入消費者帳戶。

    • 當消費者是 Amazon Redshift Serverless 工作群組時,Spectrum 無需另外付費。

  • Amazon S3 的儲存和操作成本,例如列出儲存貯體,會向擁有每個 Amazon S3 儲存貯體的帳戶計費。

如需 Amazon Redshift Serverless 帳單的其他詳細資訊,請參閱 Amazon Redshift Serverless 帳單Amazon Redshift 定價提供更多帳單和定價資訊。