
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 平台。
將資料從 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 平台。
匯入資料湖
將資料從來源移至資料湖中可查詢的表格。此技能假設來源連線(如果需要)已存在。如需設定或疑難排解 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. 驗證
執行以下三項,請勿跳過:
- 列數符合預期(來源 vs 目標)
- 關鍵欄位的空值檢查
- 抽查 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 以取得完整目錄。
參考文件
來源特定
- local-upload.md -- 本機檔案
- s3-files.md -- S3 檔案 (CSV, JSON, Parquet, Avro, ORC)
- jdbc-ingest.md -- Oracle, SQL Server, PostgreSQL, MySQL, RDS, Aurora, Redshift
- snowflake-ingest.md -- Snowflake
- bigquery-ingest.md -- BigQuery
- dynamodb-ingest.md -- DynamoDB (匯出和 Glue 直接讀取)
- catalog-migration.md -- 現有 Glue 目錄表格 (Hive, 自管 Iceberg)
跨領域
- iceberg-catalog-config-and-usage.md -- S3 Tables, 標準 Iceberg, 原始檔案:目錄設定, 引擎存取模式
- glue-job-config.md -- 作業大小, 監控, 重試
- glue-job-scripts.md -- PySpark 範本 (附加, 更新插入, 自訂 SQL, 完整重新整理)
- incremental-loading.md -- 水位線策略
- testing-and-scheduling.md -- Glue 觸發器, MWAA
- data-quality-validation.md -- 列數, 空值檢查, Glue Data Quality
- schema-evolution.md -- ALTER TABLE ADD COLUMNS, 巢狀 JSON
- type-transformations.md -- 型別衝突解決
- format-specific-loading.md -- CSV/JSON/Parquet/Avro/ORC 細節
- athena-loading.md -- Athena INSERT INTO 作為簡單載入的備援方案
- error-handling.md -- 匯入錯誤 (連線錯誤委派給 connecting-to-data-source)
- upload-options.md -- aws s3 cp vs sync, 分段上傳
遷移特定
- ctas-patterns.md -- Athena CTAS 語法和分割區轉換
- glue-etl-migration.md -- 透過 Glue 5.1 或更高版本 PySpark 進行大型表格遷移
- migration-validation.md -- 完整驗證檢查清單
- migration-troubleshooting.md -- CTAS 失敗, 可見性, 分割區
JDBC 特定
- jdbc-schema-discovery.md -- 爬蟲程式, 直接檢查, 自訂 SQL
- jdbc-performance.md -- 平行讀取, 分割區





