ingesting-into-data-lake

ingesting-into-data-lake

熱門

將資料從 S3 檔案、本機上傳、JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS、Aurora)、Amazon Redshift、Snowflake、BigQuery、DynamoDB 或現有 Glue 目錄表格(遷移)匯入 AWS 資料湖。預設目標為 S3 Tables;若未採用 S3 Tables,則支援一般用途儲存桶上的標準 Iceberg。處理一次性載入、定期管線、遷移。觸發條件:匯入資料、載入資料、擷取、同步資料庫、遷移表格、將資料移至 AWS、設定管線、ETL、從 Snowflake 拉取、查詢 BigQuery 至 S3、匯出 DynamoDB、CTAS、轉換為 Iceberg。請勿用於設定或疑難排解 Glue 連線(請使用 connecting-to-data-source)、建立空白表格(請使用 creating-data-lake-table)、執行查詢(請使用 querying-data-lake)、以模糊名稱尋找表格(請使用 finding-data-lake-assets)、目錄稽核(請使用 exploring-data-catalog),或 Salesforce、ServiceNow、SAP、MongoDB、Kafka 等 SaaS 平台。

2147星標
202分支
更新於 2026/7/27
SKILL.md
唯讀
名稱
ingesting-into-data-lake
描述

將資料從 S3 檔案、本機上傳、JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS、Aurora)、Amazon Redshift、Snowflake、BigQuery、DynamoDB 或現有 Glue 目錄表格(遷移)匯入 AWS 資料湖。預設目標為 S3 Tables;若未採用 S3 Tables,則支援一般用途儲存桶上的標準 Iceberg。處理一次性載入、定期管線、遷移。觸發條件:匯入資料、載入資料、擷取、同步資料庫、遷移表格、將資料移至 AWS、設定管線、ETL、從 Snowflake 拉取、查詢 BigQuery 至 S3、匯出 DynamoDB、CTAS、轉換為 Iceberg。請勿用於設定或疑難排解 Glue 連線(請使用 connecting-to-data-source)、建立空白表格(請使用 creating-data-lake-table)、執行查詢(請使用 querying-data-lake)、以模糊名稱尋找表格(請使用 finding-data-lake-assets)、目錄稽核(請使用 exploring-data-catalog),或 Salesforce、ServiceNow、SAP、MongoDB、Kafka 等 SaaS 平台。

版本
1

匯入資料湖

將資料從來源移至資料湖中可查詢的表格。此技能假設來源連線(如果需要)已存在。如需設定或疑難排解 Glue 連線,請委派給 connecting-to-data-source。

原則

除非環境另有指示,否則預設使用 S3 Tables。 S3 Tables 是新的資料湖工作的建議目標。如果使用者的目錄庫存顯示他們尚未採用 S3 Tables,則建議在其現有的一般用途儲存桶上使用標準 Iceberg,而不是強迫他們改變現狀。

常見任務

連線時,您必須使用 AWS MCP 伺服器工具執行命令——它們提供驗證、沙盒執行和稽核日誌。僅在 MCP 不可用時才回退到 AWS CLI。您必須在執行前解釋每個步驟。

工作流程

1. 驗證相依項目與環境

  • 您必須檢查 AWS MCP 工具或 AWS CLI 是否可用,並在缺少時通知使用者
  • 您必須確認目標 AWS 區域,並使用 aws sts get-caller-identity 驗證憑證
  • 對於 SageMaker Unified Studio 專案角色,請注意目標表格和連線可能僅限於該專案。請參閱 querying-data-lake 中的呼叫者 ARN 偵測模式。

2. 分類來源

使用者說... 來源類型 參考文件
"上傳我的檔案", "本機 CSV", "移至 S3" 本機檔案 local-upload.md
"從 S3 載入", "從 s3:// 匯入 CSV/JSON/Parquet" S3 檔案 s3-files.md
"從 Oracle/Postgres/MySQL/SQL Server/Redshift/RDS/Aurora 匯入" JDBC jdbc-ingest.md
"從 Snowflake 拉取", "Snowflake 表格至 S3" Snowflake snowflake-ingest.md
"從 BigQuery 匯入", "GCP 分析至 S3" BigQuery bigquery-ingest.md
"匯出 DynamoDB", "DynamoDB 至資料湖" DynamoDB dynamodb-ingest.md
"遷移 Glue 表格", "轉換 Hive 至 Iceberg" 目錄遷移 catalog-migration.md

如果使用者提到 Salesforce、ServiceNow、SAP、MongoDB、Kafka 或其他 SaaS/串流來源,請拒絕——此版本不支援這些來源。

如果來源表格以模糊或業務名稱引用("遷移我們的訂單表格", "從銷售倉庫拉取"),請先委派給 finding-data-lake-assets 解析後再繼續。

3. 確認連線存在(如適用)

對於 JDBC、Snowflake 和 BigQuery 來源,需要 Glue 連線。請檢查:

aws glue get-connection --name <連線名稱> --region <區域>

如果連線不存在,請停止並委派給 connecting-data-source 來建立和測試。在連線驗證完成前,請勿繼續匯入。

本機檔案、S3 檔案、DynamoDB 和目錄遷移不需要 Glue 連線。

4. 釐清目標

在建立或寫入任何表格之前,您必須詢問使用者(或根據目錄庫存建議):

  • 資料庫/命名空間:是否存在特定的目標資料庫?還是應該建立一個?
  • 表格:現有表格(附加/合併)還是新表格(委派給 creating-data-lake-table)?
  • 格式:S3 Tables(預設)、標準 Iceberg 或原始 Parquet?

庫存感知的預設值:

如果您已經執行過 exploring-data-catalog 或可以快速檢查,請使用現有的設定:

  • 帳戶有 s3tablescatalog 聯合目錄和活躍的表格儲存桶:建議使用 S3 Tables
  • 帳戶有一般用途儲存桶搭配 Iceberg 表格,且未使用 S3 Tables:建議在其現有儲存桶上使用標準 Iceberg
  • 帳戶使用 S3 上的 Parquet/ORC 但無 Iceberg 中繼資料:詢問是否現在採用 Iceberg(建議是)或繼續使用原始檔案

請勿強迫尚未採用 S3 Tables 的客戶使用。請參閱 iceberg-catalog-config-and-usage.md。

此步驟的委派:

  • 目標表格不存在 -> creating-data-lake-table
  • 目標資料庫以模糊術語命名 -> finding-data-lake-assets
  • 使用者不知道現有內容 -> exploring-data-catalog

5. 執行來源工作流程

閱讀來源特定的參考文件並遵循其階段。每個參考文件都包含作業範本、注意事項和疑難排解:

  • 本機 / S3 / JDBC / Snowflake / BigQuery / DynamoDB / 目錄遷移——每個來源一個參考文件

常見的 Glue 5.1 或更高版本的作業設定和 PySpark 範本共用於 glue-job-config.md 和 glue-job-scripts.md。

6. 驗證

執行以下三項,請勿跳過:

  1. 列數符合預期(來源 vs 目標)
  2. 關鍵欄位的空值檢查
  3. 抽查 3-5 筆樣本資料

請參閱 data-quality-validation.md。

7. 排程(如果是定期執行)

對於定期管線,請使用 cron 排程建立 Glue 觸發器。請參閱 testing-and-scheduling.md。簡單的單步驟管線使用 Glue 觸發器;多步驟且包含分支的管線使用 MWAA。

引數路由

  • 僅 S3 路徑:推斷為一次性載入,從步驟 2 開始處理 S3 檔案
  • 連線名稱:從步驟 3 開始處理指定的連線
  • 表格名稱:從步驟 4 開始,詢問這是來源還是目標
  • --target 旗標:在步驟 4 中預先填入目標格式
  • 無引數:逐步互動

注意事項

  • S3 Tables 需要 Glue 5.1 或更高版本以及 --datalake-formats iceberg 作業引數
  • 所有 spark.sql.catalog.* 設定必須放在 --conf 作業引數中,絕不能放在 spark.conf.set() 中。Glue 5.x 否則會拋出 AnalysisException: Cannot modify the value of a static config。請參閱 iceberg-catalog-config-and-usage.md 以取得正確的目錄設定。
  • warehouse 參數在 S3 Tables 目錄設定中是必需的。沒有它,Spark 會失敗並顯示 "Cannot derive default warehouse location"。
  • S3 Tables 中的表格和欄位名稱必須全部小寫
  • overwritePartitions() 只會取代 DataFrame 中存在的分割區——若要完整重新整理並刪除,請使用 createOrReplace()
  • 標準 Iceberg 目標必須包含 LOCATION 子句;S3 Tables 則不得包含
  • DynamoDB 不需要 Glue 連線——請勿嘗試建立一個
  • 匯入期間的連線失敗會委派回 connecting-to-data-source;請勿在此技能中偵錯網路/憑證問題
  • 對於 SageMaker Unified Studio 專案中的目標表格,請確保在 Glue 作業執行前,專案角色對目標命名空間具有寫入權限

疑難排解

錯誤 可能原因 動作
S3 存取遭拒 缺少 IAM 權限 檢查 Glue 角色是否具有 s3:GetObject、s3:PutObject
S3 Tables 存取遭拒 缺少 s3tables:* 權限 將 S3 Tables 內嵌政策新增至 Glue 角色
CTAS 逾時 資料集過大,不適合 Athena 切換至 Glue ETL 或使用 WHERE 篩選條件分批處理
JDBC 連線逾時/驗證失敗 連線層級問題 委派給 connecting-to-data-source
輸送量超過上限 (DynamoDB) 讀取百分比過高 降低 read.percent 或使用原生匯出

請參閱 error-handling.md 以取得完整目錄。

參考文件

來源特定

跨領域

遷移特定

JDBC 特定