從 Amazon DynamoDB 資料表載入資料 - Amazon Redshift

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

從 Amazon DynamoDB 資料表載入資料

您可以使用 COPY 命令,從單一 Amazon DynamoDB 資料表載入具有資料的資料。

重要

提供數據的 Amazon DynamoDB 表必須在相同的AWS區域作為您的集羣,除非您使用REGION選項來指定AWSAmazon DynamoDB 資料表所在的區域。

COPY 命令會利用 Amazon Redshift 大量 parallel 處理 (MPP) 架構,從 Amazon DynamoDB 資料表 parallel 讀取與載入資料。您可以藉由在 Amazon Redshift 資料表上設定配送樣式來善加利用 parallel 處理。如需詳細資訊,請參閱 使用數據分配樣式

重要

當 COPY 命令從 Amazon DynamoDB 資料表讀取資料時,產生的資料傳輸為該資料表佈建的輸送容量的一部分。

為了避免耗用過量的佈建的讀取輸送容量,建議您不要從位在生產環境中的 Amazon DynamoDB 資料表載入資料。如果您的確從生產資料表載入資料,建議您將 READRATIO 選項設定為低於未使用佈建的輸送容量平均百分比。較低的 READRATIO 設定將有助於減少節流問題。若要使用 Amazon DynamoDB 資料表的整個佈建的輸送容量,請將 READRATIO 設定為 100。

COPY 命令會使用下列規則,將 COPY 命令會將自 DynamoDB 資料表中檢索的項目中的屬性名稱,與現有 Amazon Redshift 資料表中的資料欄名稱比對:

  • Amazon Redshift 資料表資料欄與 Amazon DynamoDB 商品屬性為不區分大小寫的比對。如果 DynamoDB 資料表中的項目包含只有大小寫差異的多個屬性,例如 Price 和 PRICE,則 COPY 命令將會失敗。

  • 取決於在COPY命令。

  • 不符合 Amazon Redshift 資料表中資料欄的卓越亞馬遜 DynamoDB 屬性則會遭遺棄。屬性是在比對之前讀取,因此即使是捨棄的屬性也會使用資料表佈建的輸送容量的一部分。

  • 僅支援具有純量字符串和 NUMBER 資料類型的 Amazon DynamoDB 屬性。不支援 Amazon DynamoDB 二進位和 SET 資料類型。如果 COPY 命令嘗試載入具有不支援資料類型的屬性,命令將會失敗。如果屬性不符合 Amazon Redshift 資料表資料欄,COPY 不會嘗試載入它,也不會引發錯誤。

COPY 命令使用下列語法從 Amazon DynamoDB 資料表載入資料:

copy <redshift_tablename> from 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

有效值授權是AWS登入 Amazon DynamoDB 資料表所需的登入資料。如果這些登入資料對應於某個 IAM 使用者,該 IAM 使用者必須具備許可能夠掃描和描述正在載入的 Amazon DynamoDB 資料表。

有效值授權提供AWS您的叢集存取 Amazon DynamoDB 資料表所需的授權。許可必須包含要載入之資料表的 SCAN 和 Amazon DynamoDB 資料表。如需所需許可的詳細資訊,請參閱COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 許可。身份驗證的偏好方法是指定 IAM_ROLE 參數,並提供 IAM 角色的 Amazon Resource Name (ARN) 所需的許可。如需詳細資訊,請參閱 角色類型存取控制

若要使用 IAM_ROLE 參數進行驗證,<aws-account-id><role-name> 如下列語法所示。

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

下列範例顯示使用 IAM 角色進行身份驗證。

copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

如需其他授權選項的詳細資訊,請參閱授權參數

如果想要驗證您的資料而不實際載入資料表,請使用 NOLOAD 選項搭配 COPY 命令。

下列範例會從 DynamoDB 資料表中載入資料表的 FAVORITEMOVIES 資料表。讀取活動可能耗用最多 50% 的佈建輸送容量。

copy favoritemovies from 'dynamodb://my-favorite-movies-table' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' readratio 50;

為了讓輸送容量達到最大,COPY 命令會跨叢集中的運算節點,從 Amazon DynamoDB 資料表 parallel 載入資料。

具備自動壓縮的佈建輸送量

依預設,每當您指定空白的目標資料表而沒有壓縮編碼時,COPY 命令會套用自動壓縮。自動壓縮分析最初會從 Amazon DynamoDB 資料表取樣大量資料列。樣本大小是基於 COMPROWS 參數的值。預設值為每個配量 100,000 個資料列。

取樣之後,會捨棄樣本資料列並載入整個資料表。因此,許多資料列會讀取兩次。如需自動壓縮運作方式的詳細資訊,請參閱利用自動壓縮載入資料表

重要

當 COPY 命令從 Amazon DynamoDB 資料表讀取資料時,包括用於取樣的資料列,產生的資料傳輸為該資料表佈建的輸送容量的一部分。

從 Amazon DynamoDB 載入多字節資料

如果資料包含非 ASCII 多位元組字元 (例如中文或斯拉夫文字元),您必須將資料載入 VARCHAR 欄。VARCHAR 資料類型支援四位元組 UTF-8 字元,但 CHAR 資料類型只接受單位元組 ASCII 字元。您無法將五位元組或更長的字元載入 Amazon Redshift 資料表。如需 CHAR 和 VARCHAR 的詳細資訊,請參閱資料類型