「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

Glue – “连接“功能介绍,Glue 通过连接对 Redshift 写入数据

2020 年 3 月 19 日

Glue – “连接“功能介绍,Glue 通过连接对 Redshift 写入数据

Glue 连接的作用:AWS Glue 中的爬网程序和作业使用连接来访问某些类型的数据存储。

何时使用连接?

如果数据存储需要一个连接,则在网络爬取数据存储以在 AWS Glue 数据目录 中对其元数据进行编目时,将使用该连接。任何使用数据存储作为源或目标的作业也将使用该连接。


AWS Glue 可以使用 JDBC 协议连接到以下数据存储:

Amazon Redshift


Amazon Relational Database Service


  • Amazon Aurora

  • MariaDB

  • Microsoft SQL Server

  • MySQL

  • Oracle

  • PostgreSQL


可公开访问的数据库


  • Amazon Aurora

  • MariaDB

  • Microsoft SQL Server

  • MySQL

  • Oracle

  • PostgreSQL


Demo1 – Glue 如何与 Redshift 连接,将 ETL 后的数据直接写入到 Redshift 里,并自己定义 Distribute Key 和 SortKey

准备条件一 : 创建 Glue 连接 Redshift 的 VPC 安全组 – Glue 在连接 VPC 内的服务时,是通过创建一个新的 ENI,并使用私网地址连接,所以需要有能够访问 VPC 服务的 Security Group


1.进入 VPC 或 EC2 控制页面,选择安全组,点击创建安全组



2.输入安全组名称,描述,选择默认 VPC,这里先不添加规则,直接创建



3.安全组创建好之后,选中该安全组,复制安全组 的 ID,点击编辑



4.端口范围选择所有 TCP 端口,来源把安全组 ID 粘贴上,这样写的意思是只要有相同 Security Group 的 AWS 资源就可以访问 5439 端,点击保存



注意:如果不选择所有端口,在测试连接的时候会报如下错误



准备条件二: 创建 VPC 的 S3 Endpoint – Glue 在创建连接的时候,需要有访问 S3 的 IAM 权限和网络条件,详情参看。


1.进入到 VPC 控制页面,选择终端节点,点击创建终端节点



2.选择 s3 endpoint 服务,选择默认 VPC。



3.请注意警告部分,出于安全目的,通常建议使用私有子网+S3 Endpoint 来打通 VPC 和 S3 或其他托管服务,如果您正在使用公有子网连接 S3 或其他托管服务,请注意对自己程序的影响



4.点击创建终端节点


准备条件三: 准备一份 sample 数据


  • 打开

  • 在 sample 数据生成中,添加一行日期



3.点击 Download Data,并上传到 s3,这里我们上传到创建好的 s3://myglue-sample-data/rawdata/gluetoredshift/ 下



准备条件四: 创建测试用的 Redshift


1.进入 Redshift 控制页面,点击启动集群



2.输入集群标识,数据库名称,用户名密码,端口默认 5439,点击继续



3.由于是测试所以我们选择最小机型和单节点,在生产环境中则需要选择多节点,点击继续



4.依次选择,默认 VPC,子网(选择设置好的私有子网),选择之前创建好的安全组,IAM 角色暂时不选,在生产环境中需要设置相应的 IAM 策略,具体参考。


点击继续



5.检查一下参数没问题后,点击启动集群


6.集群创建好之后,确认集群是可用状态,数据库也运行正常



准备条件五: 创建一个用于测试连接的 Role – 该 Role 必须有访问源数据 s3 的权限和 GlueServiceRole 的权限


1.进入 IAM 控制页面,点击创建角色



2.选择 Glue 作为使用此角色的服务,点击下一步权限



3.这里需要创建一个新的策略,点击创建策略



4.进入策略编辑页面,把以下 S3 的权限粘贴进去,这里的 S3 路径是源数据所在的路径,点击查看策略


{    "Version": "2012-10-17",    "Statement": [        {            "Effect": "Allow",            "Action": [                "s3:GetObject",                "s3:PutObject"            ],            "Resource": [                "arn:aws:s3:::myglue-sample-data/rawdata/gluetoredshift/gluetoredshift*"            ]        }    ]}
复制代码



5.输入策略的名字 AWSGlueServiceRole-gluetoredshift,点击创建策略


注意:这里策略的名字一定要加 AWSGlueServiceRole- 的前缀,否则在添加策略的时候无法识别



6.回到第 3 步的页面,选择两个 Role ,AWSGlueServiceRole 和刚才创建的 AWSGlueServiceRole-gluetoredshift,点击下一步标签



7.输入标签,点击下一步



8.输入角色名称 AWSGlueServiceRole-gluetoredshift,点击创建角色



以上条件都准备好之后,开始进入 Glue 连接的设置

1.进入 Glue 控制页面,点击添加连接



2.输入连接名字,连接类型选择 Amazon Redshift,点击下一步



3.选择刚刚创建好的 Redshift 集群,输入创建好的 Database 名字,用户名,密码



4.可以看到系统会默认选择 Redshift 所在子网和安全组,点击完成



5.选中刚才创建的连接,点击测试连接



6.选择之前创建好的 Role,点击测试连接



7.连接成功



8.重复第一章的操作先爬取源数据的数据结构,并写入到 mymetastore 里,具体步骤省略,确认爬取后的数据表



9.创建写入到 Redshift 的 ETL 任务,进入到 Glue 控制页面,选择添加作业



10.输入作业名字,选择刚才创建的角色,其他默认,点击下一步



11.选择刚才爬取的数据源



12.选择更改架构,点击下一步



13.选择在数据目标中创建表,选择 JDBC,选择之前创建的 GlueToRedshift 连接,数据数据库的名字,点击下一步



14.对字段进行重命名和对 date 字段类型转换,点击保持作业并编辑脚本




15.进入作业编辑界面,在写入 Redshift 的时候,指定 distkey 和 sortkey,详细参数。


修改如下代码


datasink4 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = dropnullfields3, catalog_connection = "GlueToRedshift", connection_options = {"dbtable": "redshift_table", "database": "fromglue","diststyle":"KEY","distkey":"redshift_id","sortkeyspec":"SORTKEY(redshift_date)"}, redshift_tmp_dir = args["TempDir"], transformation_ctx = "datasink4")
复制代码


保存,并运行


16.确认任务执行成功后,到 Redshift 里查询表



17.点开 Query Editor 执行以下语句



查询新表字段情况


SELECT  "column","type","distkey","sortkey"FROM  PG_TABLE_DEFWHERE  tablename = 'redshift_table';
复制代码



可以看到,已经按照指定参数,并写入了 Redshift


在下一篇文章中,我们继续展示爬虫使用连接的 Demo2。


作者介绍: 韩宇光,AWS 解决方案架构师,熟悉互联网的大数据业务场景,有丰富的基于 AWS 上大数据解决方案的经验,对开源 hadoop 组件有一定研究。在加入 AWS 之前,在猎豹移动任职大数据高级运维工程师,有 10 多年的运维经验,深入理解云架构设计,对云上的运维,Devops,大数据解决方案有丰富的实践经验。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/glue-introduction-to-connection-feature-glue-writes-data-to-redshift-via-connection/


2020 年 3 月 19 日 21:40312

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

阿里P9这几个提高代码运行效率的小技巧我一直在用

Java架构师迁哥

inotifywait+rsync实现目录监听及同步

慢慢de

Docker rsync inotify 目录监听同步

知乎转载超30W次!金三Java面经汇总:拼多多(三面)/蚂蚁金服(四面)/字节跳动(二面)

Java架构追梦

Java 面试 拼多多面经 蚂蚁金服面经 字节跳动面经

用泡妞的逻辑理解23种常用设计模式?渣男直呼内行

北游学Java

Java 设计模式

信息爆炸时代,如何更好地处理工作信息

LigaAI

程序员 产品经理 研发管理 信息处理

腾讯专家连夜肛出来17大专题30W字的Java面试手册!

码农之家

Java 编程 程序员 互联网 面试

android适配方案,Kafka是如何实现高性能的?全套教学资料

欢喜学安卓

android 程序员 面试 移动开发

ARMv9刷屏——号称十年最大变革,Realm机密计算技术有什么亮点?

阿里云基础软件团队

爱好历史的程序员,不容错过!

不脱发的程序猿

程序员 程序人生 四月日更 全历史

c 语言思维地基搭建(总概论)

-jf.

四月日更

新思科技成为CVE编号授权机构 向公众发布更准确、实时的漏洞信息

InfoQ_434670063458

新思科技 CVE 软件质量与安全

通俗讲解分布式锁,这次你一定能懂!

Java架构师迁哥

NoSQL数据库兄弟会

大数据技术指南

sql 4月日更

Javascript执行机制-事件循环

Sakura

四月日更

梦里花落知多少,网络抖动逃不了

阿里云基础软件团队

Spark中的累加器和广播变量

五分钟学大数据

spark 4月日更

SparkStreaming流计算实战

小舰

4月日更

hashmap遍历,关于网络优化你必须要知道的重点,Android岗

欢喜学安卓

android 程序员 面试 移动开发

干货来袭!阿里技术官甩出2021最新SpringCloudAlibaba全解,理论实战齐飞!

程序员小毕

Java 程序员 架构 微服务 SpringCloud

Notion免费搭建个人网站,使用Notion又多了一个理由

彭宏豪95

GitHub Notion 写作 博客 4月日更

测评:国内到底有没有能媲美Jira的测试管理工具?

PingCode

敏捷 研发管理 测试 研发管理工具 测试管理

英特尔陈葆立:至强傲腾强强联手,实现1+1>2

新闻科技资讯

大厂Offer收割机:Netty处理写事件之连环四问,你能抗住吗?

Java架构师迁哥

源中瑞区块链BaaS平台--一键部署区块链应用

13530558032

mPaaS 月度小报 | CodeHub#4 在线教育应用的开发实践;香港站正式开服上线

蚂蚁集团移动开发平台 mPaaS

mPaaS 移动开发·

NA公链NAC公链真正的100%史诗级匿名去中心化应用

区块链第一资讯

火爆全网!万字精华总结“银四Java复习笔记”(共计22个技术专题)

比伯

Java 架构 面试 程序人生 计算机

谁说没学历就进不了大厂?(双非渣硕四年crud经验已拿下阿里P6)面经分享

云流

Java 编程 程序员 架构 面试

类加载器和双亲委派模型

hepingfly

Java ClassLoader 类加载器 双亲委派模型

智汇华云 | 看“新基建”如何将机房里的“老家伙”物尽其用

华云数据

读《小岛经济学》

箭上有毒

4月日更

Glue – “连接“功能介绍,Glue 通过连接对 Redshift 写入数据-InfoQ