You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合Redshift、AWS Data Pipeline与Elastic MapReduce实现数据仓库?

三者协作流程与具体操作指南

你的思路完全正确——AWS Data Pipeline、EMR、Redshift的典型协作模式就是用Data Pipeline调度EMR完成ETL转换,再将处理后的数据加载到Redshift,下面是具体的操作步骤:

整体架构梳理

  1. 原始数据落地到S3(AWS生态中最常用的原始数据存储位置)
  2. Data Pipeline 触发EMR集群,运行MapReduce(或Hive/Spark)作业完成数据清洗、转换
  3. 转换后的数据写入S3的临时处理目录
  4. Data Pipeline 接着调度Redshift执行COPY命令,将S3中的处理后数据批量加载到目标表

具体操作步骤

1. 前置资源准备

  • 在S3创建三个专用目录:
    • 原始数据目录:s3://your-bucket/raw-data/(存放待处理的原始数据)
    • ETL输出目录:s3://your-bucket/processed-data/(存放转换后的数据)
    • 日志目录:s3://your-bucket/logs/(存储EMR和Data Pipeline的运行日志)
  • 在Redshift中创建目标数据表,示例SQL:
CREATE TABLE sales (
    sale_id INT,
    product_name VARCHAR(100),
    sale_date DATE,
    amount DECIMAL(10,2)
);
  • 配置IAM权限:
    • 给EMR集群角色添加S3读写权限、Redshift访问权限
    • 给Data Pipeline角色添加EMR集群启停权限、S3访问权限、Redshift操作权限
    • 给Redshift集群角色添加S3读权限(用于COPY命令拉取数据)

2. 编写ETL作业(以MapReduce/Hive为例)

方式1:MapReduce JAR作业

  • 编写你的MapReduce业务逻辑(比如用Java实现数据清洗、格式转换),打包成JAR文件
  • 将JAR上传到S3的作业目录,比如 s3://your-bucket/emr-jobs/sales-transform.jar

方式2:Hive脚本(更适合新手快速实现)

编写Hive转换脚本,完成原始数据的格式转换、字段清洗,示例如下:

-- 映射S3上的原始数据为外部表
CREATE EXTERNAL TABLE raw_sales (
    sale_id STRING,
    product_name STRING,
    sale_date STRING,
    amount STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://your-bucket/raw-data/';

-- 转换数据并输出到S3处理目录
INSERT OVERWRITE DIRECTORY 's3://your-bucket/processed-data/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
SELECT 
    CAST(sale_id AS INT),
    product_name,
    CAST(sale_date AS DATE),
    CAST(amount AS DECIMAL(10,2))
FROM raw_sales;

将这个脚本上传到S3,比如 s3://your-bucket/emr-jobs/transform-sales.hql

3. 配置AWS Data Pipeline

登录AWS控制台进入Data Pipeline服务,新建管道:

  • 基础配置:选择「Build using a template」,可以直接选「Run an EMR Job」模板,减少配置工作量
  • 添加EMR执行活动:
    • 配置EMR集群:选择实例类型(比如m5.xlarge)、实例数量,指定S3日志目录
    • 指定作业内容:
      • 如果是MapReduce JAR:填写JAR路径、主类名、运行参数
      • 如果是Hive脚本:选择「Run Hive Script」类型,指定S3中的脚本路径
    • 设置依赖规则:配置为「仅当原始数据目录有新数据时触发」或固定时间触发
  • 添加Redshift加载活动:
    • 选择「Copy Data to Redshift」活动类型
    • 配置Redshift连接:填写集群端点、数据库名,建议用IAM角色认证替代明文密码
    • 数据源选择S3的processed-data目录,目标表填写Redshift中创建的sales表
    • 设置依赖规则:配置为「仅当EMR作业成功完成后执行」
  • 调度设置:根据需求选择触发方式——一次性执行(适合测试)、定时调度(比如每日凌晨)

4. 测试与验证

  • 上传少量测试数据到S3的raw-data目录
  • 手动触发Data Pipeline,在控制台查看管道运行状态
  • 登录EMR控制台,查看集群的作业日志,确认ETL转换完成
  • 登录Redshift客户端,执行SELECT * FROM sales;验证数据是否正确加载

内容的提问来源于stack exchange,提问作者Abi Manoharan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:10:35