Amazon DynamoDB 中的彙總資料,用於 Athena 中的 ML 預測 - AWS 方案指引

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

Amazon DynamoDB 中的彙總資料,用於 Athena 中的 ML 預測

由 Sachin Doshi (AWS) 和 Peter Molnar (AWS) 建立

程式碼儲存庫:透過 Amazon DynamoDB 資料搭配 Amazon Athena ML 使用 ML 預測

環境:生產

技術:機器學習和 AI;資料庫;無伺服器

工作負載:開放原始碼

AWS 服務:Amazon AthenaAmazon DynamoDBAWSLambda、Amazon SageMaker、Amazon QuickSight

Summary

此模式說明如何使用 Amazon Athena 在 Amazon DynamoDB 資料表中建置複雜的物聯網 (IoT) 資料彙總。您也會了解如何使用 Amazon 以機器學習 (ML) 推論豐富資料, SageMaker 以及如何使用 Athena 查詢地理空間資料。您可以使用此模式作為建立符合組織需求的 ML 預測解決方案的基礎。

為了示範目的,此模式使用操作機車共乘且想要預測必須為不同城市社區客戶部署之機車的最佳數量的企業範例案例。企業使用預先訓練的 ML 模型,根據過去四小時預測下一個小時的客戶需求。該案例使用路易斯維爾地鐵政府公民創新與技術辦公室的公有資料集。此案例的資源可在 GitHub 儲存庫中使用。

先決條件和限制

  • 作用中 AWS 帳戶

  • 為下列項目建立具有 AWS Identity and Access Management (IAM) 角色的 AWS CloudFormation 堆疊的許可:

    • Amazon Simple Storage Service (Amazon S3) 儲存貯體

    • Athena

    • DynamoDB

    • SageMaker

    • AWS Lambda

架構

技術堆疊

  • Amazon QuickSight

  • Amazon S3

  • Athena

  • DynamoDB

  • Lambda

  • SageMaker

目標架構

下圖顯示使用 Athena、Lambda 函數、Amazon S3 儲存體、 SageMaker 端點和 QuickSight 儀表板的查詢功能,在 DynamoDB 中建置複雜資料彙總的架構。

在 DynamoDB 中建置複雜資料彙總的架構。

該圖顯示以下工作流程:

  1. DynamoDB 資料表擷取從機群傳輸的 IoT 資料。

  2. Lambda 函數會使用擷取的資料載入 DynamoDB 資料表。

  3. Athena 查詢會為代表城市鄰里的地理空間資料建立新的 DynamoDB 資料表。

  4. 查詢位置會儲存在 S3 儲存貯體中。

  5. Athena 函數會從託管預先訓練 ML 模型的 SageMaker 端點查詢 ML 推論。

  6. Athena 會直接從 DynamoDB 資料表查詢資料,並彙總資料進行分析。

  7. 使用者會在 QuickSight 儀表板中檢視分析資料的輸出。

工具

AWS 服務

  • Amazon Athena 是一種互動式查詢服務,可協助您使用標準 直接在 Amazon S3 中分析資料SQL。

  • Amazon DynamoDB 是完全受管的無SQL資料庫服務,可提供快速、可預測且可擴展的效能。

  • Amazon SageMaker 是一項受管 ML 服務,可協助您建置和訓練 ML 模型,然後將模型部署到生產就緒的託管環境中。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • Amazon QuickSight 是一種雲端規模的商業智慧 (BI) 服務,可協助您在單一儀表板中視覺化、分析和報告資料。

  • AWS Lambda 是一項運算服務,可協助您執行程式碼,無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。

程式碼儲存庫

透過 GitHub Amazon Athena ML 儲存庫的 Amazon DynamoDB 資料,此模式的程式碼可在使用 ML 預測中取得。您可以從儲存庫使用 CloudFormation 範本來建立範例案例中使用的下列資源:

  • DynamoDB 資料表

  • Lambda 函數可載入具有相關資料的資料表

  • 推論請求的 SageMaker 端點,具有儲存在 Amazon S3 中的預先訓練XGBoost模型

  • 名為 的 Athena 工作群組V2EngineWorkGroup

  • 具名 Athena 查詢以查詢地理空間形狀檔案並預測機車需求

  • 預先建置的 Amazon Athena DynamoDB 連接器,可讓 Athena 與 DynamoDB 通訊,並使用 AWS Serverless Application Model(AWS SAM) 來建立參考 DynamoDB 連接器的應用程式

史詩

任務描述所需的技能

下載資料集和資源。

  1. 下載無底座車輛租賃的公有資料集 。基於示範目的,此資料會預先填入 DynamoDB 中,作為使用案例的一部分,但在生產環境中,您可以透過 IoT 裝置或Amazon Kinesis 取用者等各種機制將此資料傳送至 DynamoDB。這些機制使用 Lambda 將資料插入 DynamoDB 。

  2. 下載GIS形狀檔,其代表肯塔基州路易斯維爾市內歷史和文化鄰里的界限。公有資料集由 肯塔基州路易斯維爾和傑佛遜縣資訊協會 提供。原始形狀檔案已轉換為文字檔案,您可以使用 Athena 進行查詢,但您可以在 Geo-Spatial 的 Jupyter 筆記本中找到用於轉換形狀檔案的 Python 程式碼,在 中使用 Amazon Athena 處理GIS形狀檔案 GitHub。

  3. 下載預先訓練的 Python 程式碼,使用 SageMaker 和 Athena 來訓練 ML 模型每小時預測。

  4. 在 Athena 中取得SQL查詢,從 DynamoDB 中儲存的資料整合所有即時預測。

  5. (選用) 透過肯塔基州路易斯維爾的地圖 QuickSight 使用 視覺化地理空間資料 。https://data.lojic.org/datasets/LOJIC::louisville-ky-hud-grant-neighborhoods-from-1979-urban-neighborhoods/explore

應用程式開發人員、資料科學家
任務描述所需的技能

建立 CloudFormation 堆疊。

  1. 從 GitHub 儲存庫 下載 CloudFormation 範本。

  2. 登入 AWS Management Console,然後選擇 us-east-1注意:ML 模型會儲存在 的 Amazon Elastic Container Registry (AmazonECR) 中us-east-1 AWS 區域,但模式與區域無關。您可以在支援此模式 AWS 服務 使用 的任何區域中複寫模式。

  3. 開啟CloudFormation 主控台 ,然後在導覽窗格中選擇堆疊

  4. 選擇建立堆疊 ,然後選擇使用現有資源 (匯入資源)

  5. 識別資源頁面上,選擇下一個

  6. 指定範本區段中,針對範本來源 ,選取上傳範本檔案

  7. 選擇檔案 ,然後選擇您先前下載的 CloudFormation 範本。

  8. 選擇下一步 ,接受預設參數值,然後選擇下一步,逐步完成其餘的設定精靈。

  9. 選取我確認 AWS CloudFormation 可能建立具有自訂名稱IAM的資源核取方塊。

  10. 選擇建立堆疊

注意: CloudFormation 堆疊建立這些資源可能需要 15-20 分鐘。

AWS DevOps

驗證 CloudFormation 部署。

若要驗證 CloudFormation 範本的範例資料是否已載入 DynamoDB 中,請執行下列動作:

  1. 開啟 DynamoDB 主控台 ,然後從導覽窗格中選擇資料表

  2. 資料表區段中,檢查DynamoDBTableDocklessVehicles資料表。

  3. 資源建立完成後,開啟 Athena 主控台 ,然後從導覽窗格中選擇工作群組

  4. 選擇V2EngineWorkGroup工作群組,然後選擇切換工作群組

  5. 如果您收到儲存查詢結果位置的提示,請選擇您具有寫入許可的 Amazon S3 位置。

  6. 選擇 Save (儲存)。

  7. 在導覽窗格中,選擇查詢編輯器 ,然後選擇athena-ml-db-<your-AWS-account-number>資料庫。

應用程式開發人員
任務描述所需的技能

使用地理空間資料建立 Athena 資料表。

若要將地理位置檔案載入 Athena,請執行下列動作:

  1. 開啟 Athena 主控台 ,然後從導覽窗格中選擇查詢編輯器

  2. 選擇已儲存的查詢索引標籤。

  3. 搜尋並選取Q1:鄰里

  4. 若要返回查詢編輯器,請選擇編輯器索引標籤。

  5. 選擇執行。這會在資料庫中建立名為louisville_ky_neighborhoods 的資料表。確定已在athena-ml-db-<your-AWS-account-number>資料庫中建立資料表。

查詢會為代表城市鄰里的地理空間資料建立新的資料表。資料表是從 GIS shapefiles 建立。CREATE EXTERNAL TABLE 陳述式定義資料表的結構描述,以及基礎資料檔案的位置和格式。

如需處理形狀檔案並產生此表格的 Python 程式碼,請參閱 AWS 範例中的使用 Amazon Athena 對GIS形狀檔案進行地理空間處理。如需詳細SQL程式碼,請參閱 上的 create_neighborhood_table.sql GitHub。

資料工程師
任務描述所需的技能

在 Athena 中宣告要查詢 的函數 SageMaker。

  1. 開啟 Athena 主控台,從導覽窗格中選擇查詢編輯器,然後選擇編輯器索引標籤。

  2. 將下列SQL陳述式複製並貼到查詢編輯器中。

    USING EXTERNAL FUNCTION predict_demand ( location_id BIGINT, hr BIGINT , dow BIGINT, n_pickup_1 BIGINT, n_pickup_2 BIGINT, n_pickup_3 BIGINT, n_pickup_4 BIGINT, n_dropoff_1 BIGINT, n_dropoff_2 BIGINT, n_dropoff_3 BIGINT, n_dropoff_4 BIGINT ) RETURNS DOUBLE SAGEMAKER '<Your SageMaker endpoint>'

    SQL 陳述式的第一部分宣告外部函數從託管預先訓練模型的 SageMaker 端點查詢 ML 推論。

  3. 定義輸入參數的順序和類型,以及傳回值的類型。

  4. 選擇執行

資料科學家、資料工程師

從彙總的 DynamoDB 資料,依鄰里預測滑板機的需求。

現在,您可以使用 Athena 直接從 DynamoDB 查詢交易資料,然後彙總資料進行分析和預測。直接查詢 DynamoDB NoSQL 資料庫並不容易達成此目標。

  1. 開啟 Athena 主控台,然後從導覽窗格中選擇查詢編輯器

  2. 選擇已儲存的查詢索引標籤。

  3. 搜尋並選取Q2:D ynamoDBAthenaMLScooterPredict

  4. 若要返回查詢編輯器,請選擇編輯器索引標籤。

  5. 選擇執行

SQL 陳述式會執行下列動作:

  • 使用 Athena 聯合查詢查詢,以原始跳脫資料查詢 DynamoDB 資料表

  • 使用 Athena 的地理空間函數,將地理座標放置在鄰里

  • 使用 以 ML 推論豐富資料 SageMaker

如需使用 SQL 彙總 Athena 中的 DynamoDB 資料和 SageMaker 推論資料的相關資訊,請參閱 中的 athena_long.sql GitHub。

應用程式開發人員、資料科學家

驗證輸出。

輸出資料表包含鄰里、經度和鄰里中樞的緯度。它還包括預測下一個小時的車輛數量。

查詢會產生所選時間點的預測。您可以透過變更陳述式中TIMESTAMP '2019-09-07 15:00'任意位置的表達式,對任何其他時間進行預測。

如果您的 DynamoDB 資料表中有即時資料饋送,請將時間戳記變更為 NOW()

應用程式開發人員、資料科學家
任務描述所需的技能

刪除資源。

  1. 開啟 Athena 主控台,並清空您在堆疊中建立的儲存貯體。 CloudFormation

  2. 開啟CloudFormation 主控台 ,然後刪除名為 的堆疊bdb-1462-athena-dynamodb-ml-stack

  3. 開啟 Amazon CloudWatch 主控台 ,然後刪除名為 的日誌群組/aws/sagemaker/Endpoints/Sg-athena-ml-dynamodb-model-endpoint

應用程式開發人員、 AWS DevOps

相關資源