本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
快速入門:Amazon S3 中的查詢資料
使用者可以使用 SQL 擴充功能從 JupyterLab 筆記本執行SQL查詢,以分析存放在 Amazon S3 中的資料。延伸模組與 Athena 整合,只需幾個額外步驟,即可為 Amazon S3 中的資料啟用功能。
本節會逐步引導您從 Amazon S3 將資料載入 Athena,然後查詢 JupyterLab 使用SQL延伸模組的資料。您將建立 Athena 資料來源和 AWS Glue 爬蟲程式,為您的 Amazon S3 資料編製索引、設定適當的IAM許可以啟用 Athena 的 JupyterLab 存取,並 JupyterLab 連線至 Athena 以查詢資料。遵循以下幾個步驟,您將能夠使用 JupyterLab 筆記本中的SQL擴充功能來分析 Amazon S3 資料。
必要條件
-
使用具有管理員許可的 AWS Identity and Access Management (IAM) 使用者帳戶登入 AWS 管理主控台。如需如何註冊 AWS 帳戶並建立具有管理存取權的使用者的詳細資訊,請參閱 完成 Amazon SageMaker 先決條件。
-
擁有 SageMaker 網域和使用者設定檔以存取 SageMaker Studio。如需如何設定 SageMaker 環境的資訊,請參閱 使用 Amazon 的快速設定 SageMaker。
-
擁有 Amazon S3 儲存貯體和資料夾來儲存 Athena 查詢結果,使用與 SageMaker 環境相同的 AWS 區域和帳戶。如需如何在 Amazon S3 中建立儲存貯體的資訊,請參閱 Amazon S3 文件中的建立儲存貯體。您將將此儲存貯體和資料夾設定為查詢輸出位置。
若要存取和查詢 Amazon S3 中的資料:
步驟 1:為您的 Amazon S3 資料設定 Athena 資料來源和 AWS Glue 爬蟲程式
請依照下列步驟,在 Amazon S3 中為資料編製索引,並在 Athena 中建立資料表。
注意
為了避免不同 Amazon S3 位置的資料表名稱之間發生衝突,請為每個位置建立單獨的資料來源和爬蟲程式。除非加上字首,否則每個資料來源都會建立名為 資料夾的資料表,其中包含它們。
-
設定查詢結果位置
-
前往 Athena 主控台:https://console.aws.amazon.com/athena/
。 -
從左側選單中,選擇工作群組 。
-
遵循
primary
工作群組的連結,然後選擇編輯 。 -
在查詢結果組態區段中,輸入輸出目錄的 Amazon S3 路徑,然後選擇儲存變更。
-
-
為您的 Amazon S3 資料建立 Athena 資料來源
-
從 Athena 主控台的左側選單中,選擇資料來源,然後選擇建立資料來源 。
-
選擇 S3 - AWS Glue Data Catalog,然後選擇 Next 。
-
在此AWS Glue 帳戶中保留預設資料目錄,選擇在 中建立爬蟲程式 AWS Glue,然後在 中建立 AWS Glue爬蟲程式。這會開啟 AWS Glue 主控台。
-
-
使用 AWS Glue 來爬取資料來源
-
輸入新爬蟲程式的名稱和描述,然後選擇下一步。
-
在資料來源 下,選擇新增資料來源 。
-
如果包含您資料的 Amazon S3 儲存貯體位於與您 SageMaker 環境不同的 AWS 帳戶中,請在 S3 資料的位置 的另一個帳戶中選擇 。 S3
-
在 Amazon S3 中輸入資料集的路徑。例如:
s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/
-
保留所有其他預設值,然後選擇新增 Amazon S3 資料來源 。您應該會在資料來源資料表中看到新的 Amazon S3 資料來源。
-
選擇 Next (下一步)。
-
-
設定爬蟲程式IAM的角色以存取您的資料。
注意
每個角色的範圍都會縮小至您指定的資料來源。重複使用角色時,請編輯JSON政策以新增任何您想要授予存取權的新資源,或為此資料來源建立新角色。
-
選擇建立新IAM角色 。
-
輸入角色的名稱,然後選擇下一步。
-
-
-
建立或選取資料表的資料庫
-
如果您在 Athena 中沒有現有資料庫,請選擇新增資料庫,然後選擇建立新的資料庫 。
-
返回先前的爬蟲程式建立索引標籤,在輸出組態 中,選擇重新整理按鈕。您現在應該會在清單中看到新建立的資料庫。
-
選取您的資料庫,在資料表名稱字首中新增選用字首,然後選擇下一步。
注意
對於您的資料位於 的先前範例
s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/
,新增字首taxi-ride-
會建立名為 的資料表taxi-ride-year_2019
。當多個資料位置具有相同的名稱資料夾時,新增字首有助於防止資料表名稱衝突。
-
-
選擇建立爬蟲程式 。
-
執行爬蟲程式以編製資料索引。等待爬蟲程式執行達到
Completed
狀態,這可能需要幾分鐘的時間。
若要確保建立新的資料表,請前往 中的左側選單 AWS Glue ,然後選擇資料庫,然後選擇資料表 。您現在應該會看到包含資料的新資料表。
步驟 2:授予 Studio 存取 Athena 的許可
在下列步驟中,您授予使用者設定檔許可的執行角色以存取 Athena。
-
擷取與使用者設定檔相關聯的執行角色ARN的
-
前往 的 SageMaker 主控台https://console.aws.amazon.com/sagemaker/
,然後在左側選單中選擇網域。 -
遵循網域名稱的名稱。
-
在使用者設定檔清單中,遵循使用者設定檔的名稱。
-
在使用者詳細資訊頁面上,複製執行角色ARN的 。
-
-
更新執行角色的政策
-
在主控台的 SageMaker右上角尋找您的 AWS 區域和帳戶 ID。使用這些值和資料庫名稱,在文字編輯器中更新下列JSON政策中的預留位置。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetS3AndDataSourcesMetadata", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetSchema", "glue:GetTables", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "glue:GetDatabase", "glue:GetTable", "glue:ListSchemas", "glue:GetPartitions" ], "Resource": [ "arn:aws:s3:::*", "arn:aws:glue:
region
:account-id
:catalog", "arn:aws:glue:region
:account-id
:database/db-name
" ] }, { "Sid": "ExecuteAthenaQueries", "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:RunQuery", "athena:StartSession", "athena:GetQueryResults", "athena:ListWorkGroups", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:GetBucketLocation", "athena:GetDataCatalog", "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "athena:GetWorkGroup" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "GetGlueConnectionsAndSecrets", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "*" ] } ] } -
前往IAM主控台:https://console.aws.amazon.com/iam/
然後選擇左側選單中的角色。 -
依角色名稱搜尋您的角色。
注意
您可以從其 Amazon Resource Name (ARN) 中擷取執行角色名稱,方法是在 ARN 上分割
'/'
並取得最後一個元素。例如,在下列 範例中ARNarn:aws:iam::112233445566:role/SageMakerStudio-SQLExtension-ExecutionRole
,執行角色的名稱為SageMakerStudio-SQLExtension-ExecutionRole
。 -
請遵循角色的連結。
-
在許可索引標籤中,選擇新增許可,然後選擇建立內嵌政策 。
-
在政策編輯器區段中選擇
JSON
格式。 -
複製上述政策,然後選擇下一步。請確定您已將所有
account-id
、region-name
和 取代db-name
為其值。 -
輸入政策的名稱,然後選擇建立政策 。
-
步驟 3:在 中啟用 Athena 預設連線 JupyterLab
在下列步驟default-athena-connection
中,您可以在 JupyterLab 應用程式中啟用 。預設 Athena 連線允許直接從 執行 Athena 中的SQL查詢 JupyterLab,而不需要手動建立連線。
若要啟用預設 Athena 連線
-
前往 的 SageMaker 主控台https://console.aws.amazon.com/sagemaker/
,然後在左側選單中選擇 Studio。使用您的網域和使用者設定檔,啟動 Studio。 -
選擇 JupyterLab 應用程式。
-
如果您尚未為 JupyterLab 應用程式建立空間,請選擇建立 JupyterLab 空間 。輸入空間的名稱,將空間保留為私有 ,然後選擇建立空間 。使用最新版本的 SageMaker分發映像執行您的空間。
否則,請選擇執行空間以啟動 JupyterLab 應用程式。
-
啟用 Athena 預設連線:
-
在 JupyterLab 應用程式中,導覽至頂端導覽列中的設定選單,然後開啟設定編輯器選單。
-
選擇資料探索 。
-
勾選啟用預設 Athena 連線 的方塊。
-
在 JupyterLab 應用程式中,選擇左側導覽窗格中的SQL延伸圖示 ( ) 以開啟SQL延伸模組。
-
選擇資料探索面板底部的重新整理按鈕。您應該
default-athena-connection
會在連線清單中看到 。
-
步驟 4:使用SQL延伸模組從 JupyterLab 筆記本查詢 Amazon S3 中的資料
您已準備好在 JupyterLab 筆記本SQL中使用 查詢資料。
-
開啟連線,
default-athena-connection
然後開啟 AWS DataCatalog。 -
導覽至您的資料庫,然後選擇右側的三個點圖示 ( )。選取筆記本 中的查詢。
這會自動在 中填入筆記本儲存格 JupyterLab ,其中包含相關的
%%sm_sql
魔術命令,以連線至資料來源。它也會新增範例SQL陳述式,以協助您立即開始查詢。注意
執行SQL查詢之前,請務必將延伸模組載入頂端儲存格。
您可以使用 延伸的自動完成和反白顯示功能進一步精簡SQL查詢。SQL JupyterLab SQL延伸模組的編輯器功能 如需使用SQL延伸SQL編輯器的詳細資訊,請參閱 。