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
readonlyread-only
name
ingesting-into-data-lake
description

Import data into the AWS data lake from S3 files, local uploads, JDBC databases (Oracle, SQL Server, PostgreSQL, MySQL, RDS, Aurora), Amazon Redshift, Snowflake, BigQuery, DynamoDB, or existing Glue catalog tables (migration). Default target is S3 Tables; standard Iceberg on a general purpose bucket is supported where S3 Tables is not adopted. Handles one-time loads, recurring pipelines, migrations. Triggers on: import data, load data, ingest, sync database, migrate table, move data to AWS, set up pipeline, ETL, pull from Snowflake, query BigQuery into S3, export DynamoDB, CTAS, convert to Iceberg. Do NOT use for setting up or troubleshooting Glue connections (use connecting-to-data-source), creating empty tables (use creating-data-lake-table), running queries (use querying-data-lake), finding tables by fuzzy name (use finding-data-lake-assets), catalog audit (use exploring-data-catalog), or SaaS platforms like Salesforce, ServiceNow, SAP, MongoDB, Kafka.

version
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.mdglue-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 特定