AWS用Glue读取S3文件上传数据到Redshift,再导出到Quicksight完整版,含VPC配置

news2025/4/13 17:15:51

1. 项目背景

AWS的官方文档,关于Glue和Vpc配置部分已经比较旧了,按照官方文档配置的流程始终跑不通,花了一番时间和波折后,才终于完整的跑通了。

在数据分析和商业智能(BI)领域,我们常需要将存储在 Amazon S3 上的原始数据加载到 Amazon Redshift Serverless,进行清理和转换后,再导入 Amazon QuickSight 进行可视化分析。本文将介绍如何使用 AWS Glue 读取 S3 文件,上传数据到 Redshift,并导出到 QuickSight,同时解决 VPC 访问问题

2. 架构流程

  1. 数据存储:S3 作为数据源,存放 CSV、JSON 或 Parquet 文件。

  2. 数据 ETL:Glue 读取 S3 数据,转换格式后上传到 Redshift。

  3. 数据分析:Redshift 存储清洗后的数据,提供 SQL 查询能力。

  4. 可视化展示:QuickSight 连接 Redshift 进行数据分析。

  5. VPC 配置:Redshift 运行在私有子网,需要 VPC 连接让 Glue 和 QuickSight 访问它。

    AWS整体流程配置顺序:

    配置VPC --> 创建 Redshfit 的IAM  --> 创建含Glue读写权限的IAM --> 创建Redshift 命名空间         --> 创建Glue任务  --> Quicksight 创建VPC配置 --> 读取Redshift

3. 详细操作步骤

3.1  VPC配置 (最重要的一个环节) 

  创建VPC: 其他选项按照默认的配置,手动开启DSN设置。(或者直接使用默认的VPC)

创建子网,互联网网关,子网和路由按照默认的做配置,之后自己需要再手动配置路由,所有的配置的时候下拉框都选择刚刚创建的VPC

路由需要加入0.0.0.0/0 igw,才能访问公网  (如果使用默认VPC,此处需要确认,没有的话手动加一下)

配置网络ACL,入站和出站规则:

然后再点击子网关联,编辑子网,把创建的子网加入进去

创建一个安全组,把所有流量都配置到源为安全组名称自己的配置上

终端节点,添加vpce-svc-0704d47ebfd5f32fc,s3,redshift,sts,kms, secretsmanager,这几个都必须要,缺一不可。

3.2  创建 Amazon Redshift Serverless 集群

  1. 登录 AWS 控制台,进入 Amazon Redshift Serverless控制面板。

  2. 创建工作组,配置需注意:

  3. Performance and cost controls:选择基本容量

    • RPU选择这个地方是大坑,天坑,一定要慎重选择,默认值是128, 一定要根据自己的数据大小看清楚合适的配置。(一个 RPU 提供 16 GB 内存),如果配置太高,哪怕只是执行简单一条查询,每次都按配置的RPU进行搜索计费。
      Amazon Redshift Serverless 的计算容量     Amazon Redshift Serverless 的计费

    • 网络和安全:选择配置的VPC,或者默认VPC,选择 私有子网

    • 安全组:选择一个自定义的安全组,记住名称,这个安全组后面还需要做一些配置

    • 增强型 VPC 路由:打开

    • IAM

  4. 创建表结构:写sql创建,例如:

    CREATE TABLE zyytest1 (
        id INT PRIMARY KEY,
        test_f1 VARCHAR(255),
        create_time TIMESTAMP
    );

    3.3  在 S3 上传数据

     在 S3 上传数据 zyytest1__max__3.json

    [
      {"id":5, "test_f1": "test_value_6", "create_time": "2025-03-26T10:00:06"},
      {"id":7, "test_f1": "test_value_7", "create_time": "2025-03-26T10:00:07"},
      {"id":8, "test_f1": "test_value_8", "create_time": "2025-03-26T10:00:08"}
    ]

    3.4  配置 AWS Glue 读取 S3 数据并上传到 Redshift

            3.4.1  创建 Glue VPC网络

             进入 AWS Glue 控制台,选择 Connections > Create connection

              选择Network --> next --> 选择3.1 里搭建的VPC,子网,安全组,保存default_vpc。创建完之后状态是ready就是正常的。

            3.4.2  创建 Glue 数据连接

                    进入 AWS Glue 控制台,选择 Connections > Create connection。

                    选择redshift --> 填写name:redshift-dev,把刚刚创建的redshift用户名命名填写上,保存后显示Ready,就是正常的可用状态。

    如果配置完不可用,可以点击这个Test connection  来测试连接是否正常

            3.4.3  创建 Glue Visual 

            点Visual ETL,选择S3,配置路径后,先查看schema是否正确

    配置完之S3的路径之后,可以在左下角看到schema

     正确的话进行下一步,选择Redshift,配置数据库连接,查看数据库表的schema是否正确。

           

    这个IAM记得配置上,就可以看到数据库的schema,在左下角。

    然后点击Script,可以看到图形化的配置生成的Script,并且可以在这个Script上,用python脚本更改配置。

    到这一步就证明VPC和Redshift的数据库都通了,接下来就可以摸索按照自己的需要,选择用图形化的方式配置更合适,或者用脚本的方式更合适了。

    配置完保存之后运行一遍,成功的话,在redshift查询下是否完整存入,如果缺少数据,需要手动指定schema。

            3.4.4  如果查询失败,再检查下IAM配置,选择合适的策略 
                    
            3.4.5  Job details 检查配置

    3.5 配置QuickSight VPC 

    点击右上角管理Quicksight --> 管理VPC链接 --> 添加VPC链接,把3.1配置的vpc,子网,安全组附加上去

    3.6 配置 Amazon QuickSight 访问 Redshift

    找到数据集 --> 新数据集 --> Redshift手动连接 ,选择刚刚创建的vpc,配置redshift的数据库账号密码,点击验证连接,验证通过后,创建数据源

    点击分析,新分析,创建界面化的表格,进行DIY。

    4. 总结

    • AWS Glue 负责从 S3 读取数据,转换后写入 Redshift

    • VPC 配置 解决 Glue 和 QuickSight 无法访问 Redshift 的问题。

    • QuickSight 连接 Redshift 进行 数据可视化

    通过该流程,我们可以自动化数据管道,实现从 S3 -> Glue -> Redshift -> QuickSight 的完整数据流,为企业 BI 提供高效的数据分析能力! 🚀

    参考链接:

    AWS Glue官方文档

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2327414.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    Python爬虫第3节-会话、Cookies及代理的基本原理

    目录 一、会话和Cookies 1.1 静态网页和动态网页 1.2 无状态HTTP 1.3 常见误区 二、代理的基本原理 2.1 基本原理 2.2 代理的作用 2.3 爬虫代理 2.4 代理分类 2.5 常见代理设置 一、会话和Cookies 大家在浏览网站过程中,肯定经常遇到需要登录的场景。有些…

    OkHttpHttpClient

    学习链接 okhttp github okhttp官方使用文档 SpringBoot 整合okHttp okhttp3用法 Java中常用的HTTP客户端库:OkHttp和HttpClient(包含请求示例代码) 深入浅出 OkHttp 源码解析及应用实践 httpcomponents-client github apache httpclie…

    c++柔性数组、友元、类模版

    目录 1、柔性数组: 2、友元函数: 3、静态成员 注意事项 面试题:c/c static的作用? C语言: C: 为什么可以创建出 objx 4、对象与对象之间的关系 5、类模版 1、柔性数组: #define _CRT_SECURE_NO_WARNINGS #…

    Centos 8 安装教程(新手版)

    1.需要在阿里开源镜像站下载对应的镜像,如下:https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/ 2.打开VM虚拟机,创建新的虚拟机,选择自定义 如图所示点击进行: 选择下载好的镜像 选择“Linux”,版…

    Vue2函数式组件实战:手写可调用的动态组件,适用于toast轻提示、tip提示、dialog弹窗等

    Vue2函数式组件实战:手写可调用的动态组件 一、需求场景分析 在开发中常遇到需要动态调用的组件场景: 全局弹窗提示即时消息通知动态表单验证需要脱离当前DOM树的悬浮组件 传统组件调用方式的痛点:必须预先写入模板,可能还要用…

    大象如何学会太空漫步?美的:科技领先、To B和全球化

    中国企业正处在转型的十字路口。一边是全新的技术、全新的市场机遇;一边是转型要面临的沉重负累和巨大投入,无数中国制造、中国品牌仍在寻路,而有的人已经走至半途。 近日,美的集团交出了一份十分亮眼的2024年财报。数据显示&…

    已经使用中的clickhouse更改数据目录

    在更换的目录操作,这里更换的目录为home目录,原先安装的目录在/soft/clickhouse/ ,在该目录下有data目录和log目录 更改前目录 更改后目录 1、停止clickhouse服务 sudo systemctl stop clickhouse-server 2、在home目录创建clickhouse目录,在clickho…

    PHP的相关配置和优化

    进入etc下面 去掉注释 pid run/php-fpm.pid #指定pid文件存放位置 生成一下子配置文件 这些都是生成的fastcgi的配置文件 进入php中,然后复制模版,生成配置文件 然后编辑文件更改时区 改完之后可以生成启动脚本 这时候刷新之后,再启动会报…

    【leetcode100】每日温度

    1、题目描述 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输…

    <贪心算法>

    前言:在主包还没有接触算法的时候,就常听人提起“贪心”,当时是layman,根本不知道说的是什么,以为很难呢,但去了解一下,发现也不过如此嘛(bushi),还以为是什么高级东西呢…

    基于银河麒麟桌面服务器操作系统的 DeepSeek本地化部署方法【详细自用版】

    一、3种方式使用DeepSeek 1.本地部署 服务器操作系统环境进行,具体流程如下(桌面环境步骤相同): 本例所使用银河麒麟高级服务器操作系统版本信息: (1)安装ollama 方式一:按照ollama官网的下载指南,执行如下命令: curl -fsSL https://ollama.com/install.sh | sh方…

    「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用

    一站式掌握最新技术栈!手把手教你配置路由、集成UI组件库、高效开发秘籍大公开 ReactAntrouteraxiosmocktailwind css等组合安装使用教程 官网:React Native 中文网 使用React来编写原生应用的框架 一,安装 npx create-react-app my-app …

    Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境

    在 Ubuntu 24.04.2 LTS 系统中,系统本身自带了 Python 3,不过你还是可以按照下面的步骤来安装和配置 Python 环境。 1. 检查系统自带的 Python 版本 在终端中输入以下命令查看系统自带的 Python 版本: python3 --version如果显示了 Python…

    redis7.0搭建redis-cluster集群部署实战

    环境 基于3台centos服务 host节点1端口节点2端口master70007001slave170007001slave270007001 安装redis,以及环境准备 安装可以参考https://blog.csdn.net/tao1992/article/details/132614567 安装路径设置了/usr/local/redis 分别在3台服务器上执行 #配置文…

    CMake学习--如何在CMake中编译静态库、动态库并在主程序中调用

    目录 一、背景知识二、使用方法(一)编译静态库(二)编译动态库(三)在主程序中调用库 三、总结 一、背景知识 在C/C开发中,库(Library)是预先编译好的代码集合&#xff0c…

    安美数字酒店宽带运营系统存在SQL注入漏洞

    免责声明:本号提供的网络安全信息仅供参考,不构成专业建议。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我联系,我将尽快处理并删除相关内容。 漏洞描述 安美数字酒店宽带运营系统的lang…

    ubuntu18 server版花屏问题

    新搞了一台dellT150的塔式服务器,装的ubuntu18 server版。 开机后遇到花屏,或者卡在开机界面的问题,和售后技术沟通这个情况是ubuntu自带的显卡驱动包兼容问题。需要做如下设置: 解决: 1.开机,连续按下e…

    基于神经网络的肾脏疾病预测模型

    构建一个基于神经网络的肾脏疾病预测模型 1. 数据预处理 ​加载数据:读取 kidney_disease.csv 文件,加载患者医疗数据。​删除冗余特征:移除与预测目标无关的列(如 al, su 等),保留关键特征(如…

    I/O多路复用 + Reactor和Proactor + 一致性哈希

    网络系统 1. I/O多路复用1)原始Socket模型通信方式2)多进程模型3)多线程模型4)I/O多路复用select/pollepoll边缘触发和水平触发 2. Reactor和Proactor1)Reactor模式2)Reactor模式四种方案3)单Re…

    解决小程序video控件在真机和上线后黑屏不播放问题

    小程序上线后,mp4格式的视频无法点击是黑屏,但是测试得时候在微信开发者工具中能够打开正常播放 原因:编码格式不能是vp9 微信开发者工具本地设置中把这个打开勾选。 排查:可以换一个视频尝试能不能真机播放,如果能&a…