Azure Cosmos DB 連線 - AWS Glue

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

Azure Cosmos DB 連線

您可以使用 AWS Glue for Spark,從使用 AWS Glue 4.0 及更新版本之 NoSQL API 的 Azure Cosmos DB 讀取和寫入現有容器。您可以使用 SQL 查詢定義要從 Azure Cosmos DB 讀取的內容。您可以使用透過 AWS Glue 連線儲存於 AWS Secrets Manager 的 Azure Cosmos DB 索引鍵連線至 Azure Cosmos DB。

如需有關 Azure Cosmos DB for NoSQL 的詳細資訊,請參閱 Azure 文件

設定 Azure Cosmos DB 連線

若要從 AWS Glue 連線至 Azure Cosmos DB,您將需要在 AWS Secrets Manager 密碼中建立並儲存 Azure Cosmos DB 索引鍵,然後將該密碼與 Azure Cosmos DB AWS Glue 連線建立關聯。

先決條件:

  • 在 Azure 中,您將需要識別或產生 Azure Cosmos DB 索引鍵 cosmosKey,以供 AWS Glue 使用。如需詳細資訊,請參閱《Azure 文件》中的安全存取 Azure Cosmos DB 中的資料

設定連至 Azure Cosmos DB 的連線:
  1. 在 AWS Secrets Manager 中,使用 Azure Cosmos DB 索引鍵建立密碼。若要在 Secrets Manager 中建立機密,請遵循 AWS Secrets Manager 文件中建立 AWS Secrets Manager 機密中提供的教學課程。建立機密之後,請保留機密名稱 secretName,以便進行下一個步驟。

    • 在選取鍵/值組時,請使用 cosmosKey 值來建立 spark.cosmos.accountKey 金鑰對。

  2. 在 AWS Glue 主控台中,依照 新增 AWS Glue 連線 中的步驟建立連線。建立連線之後,請保留連線名稱 connectionName,以便未來在 AWS Glue 中使用。

    • 選取連線類型時,請選取 Azure Cosmos DB。

    • 選取 AWS 機密時,請提供 secretName

建立 AWS Glue Azure Cosmos DB 連線之後,您將需要執行下列步驟,才能執行 AWS Glue 工作:

  • 授予與您 AWS Glue 任務許可相關聯的 IAM 角色,以讀取 secretName

  • 在您的 AWS Glue 任務組態中,提供 connectionName 作為其他網路連線

從 Azure Cosmos DB for NoSQL 容器讀取

先決條件:

  • 您想要讀取的 Azure Cosmos DB for NoSQL 容器。您將需要容器的識別資訊。

    An Azure Cosmos NoSQL 容器由資料庫和容器識別。連線至 Azure Cosmos for NoSQL API 時,您必須提供資料庫名稱 cosmosDBName 和容器名稱 cosmosContainerName

  • 完成設定的 AWS Glue Azure Cosmos DB 連線,可提供驗證和網路位置資訊。若要取得此功能,請完成上一個程序設定連至 Azure Cosmos DB 的連線中的步驟。您將會需要 AWS Glue 連線的名稱,connectionName

例如:

azurecosmos_read = glueContext.create_dynamic_frame.from_options( connection_type="azurecosmos", connection_options={ "connectionName": connectionName, "spark.cosmos.database": cosmosDBName, "spark.cosmos.container": cosmosContainerName, } )

您也可提供 SELECT SQL 查詢,以篩選傳回 DynamicFrame 的結果。您將需要設定 query

例如:

azurecosmos_read_query = glueContext.create_dynamic_frame.from_options( connection_type="azurecosmos", connection_options={ "connectionName": "connectionName", "spark.cosmos.database": cosmosDBName, "spark.cosmos.container": cosmosContainerName, "spark.cosmos.read.customQuery": "query" } )

寫入 Azure Cosmos DB for NoSQL 容器

此範例會從現有的 DynamicFrame dynamicFrame 將資訊寫入 Azure Cosmos DB。如果容器已具有資訊,則 AWS Glue 會從 DynamicFrame 附加資料。如果容器中的資訊與寫入的資訊具有不同的結構描述,就會發生錯誤。

先決條件:

  • 您想要寫入的 Azure Cosmos DB 資料表。您將需要容器的識別資訊。您必須先建立容器,再呼叫連線方法。

    An Azure Cosmos NoSQL 容器由資料庫和容器識別。連線至 Azure Cosmos for NoSQL API 時,您必須提供資料庫名稱 cosmosDBName 和容器名稱 cosmosContainerName

  • 完成設定的 AWS Glue Azure Cosmos DB 連線,可提供驗證和網路位置資訊。若要取得此功能,請完成上一個程序設定連至 Azure Cosmos DB 的連線中的步驟。您將會需要 AWS Glue 連線的名稱,connectionName

例如:

azurecosmos_write = glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="azurecosmos", connection_options={ "connectionName": connectionName, "spark.cosmos.database": cosmosDBName, "spark.cosmos.container": cosmosContainerName )

Azure Cosmos DB 連線選項參考

  • connectionName – 必要。用於讀取/寫入。完成設定之 AWS Glue Azure Cosmos DB 連線的名稱,可向連線方法提供驗證和網路位置資訊。

  • spark.cosmos.database – 必要。用於讀取/寫入。有效值:資料庫名稱。Azure Cosmos DB for NoSQL 資料庫名稱。

  • spark.cosmos.container – 必要。用於讀取/寫入。有效值:容器名稱。Azure Cosmos DB for NoSQL 容器名稱。

  • spark.cosmos.read.customQuery – 用於讀取。有效值:SELECT SQL 查詢。自訂查詢以選取要讀取的文件。