写点什么

快速构建基于 AWS Glue 的抽取跨区域 MySQL 8 的数据管道

  • 2020-03-04
  • 本文字数:9941 字

    阅读完需:约 33 分钟

快速构建基于 AWS Glue 的抽取跨区域 MySQL 8 的数据管道

在这个互联网高速发展,信息爆炸的时代,数据对于业务决策是至关重要的一环。随着数据类型的日益复杂,除了传统的交易数据,各种日志信息,行为数据也蕴含丰富的信息。如何简单高效的构建一个复杂的数据处理流程至关重要。


AWS Glue 是一种完全托管的数据目录和 ETL 工具,如果您是首次使用 AWS Glue 详细演示和概念讲解可参照此博客。当前 AWS Glue 原生的 JDBC 连接库不支持 MySQL 8,本文展示如何利用自定义的 JDBC 库连接外部数据源。本文以 MySQL 8 举例,但任何支持 JDBC 连接的数据源都适用于此方法。由于目前国内宁夏区域的成本更经济,所以生产系统的数据库在北京,但数据处理系统在宁夏的情况并不少见。


本文演示在宁夏区使用 AWS Glue 服务把位于北京区域私有子网中的 RDS (Mysql 8)的数据定时抽取到位于宁夏的 S3 中,并做处理。本文假定您已经有配置 AWS VPC,子网,安全组,角色的经验,如不清楚概念和如何配置请参照AWS官网

第一步:准备 MySQL 8 数据源

若已经有现成的数据源及数据可略过此部分。


注意:RDS 数据库不能开公有访问(Public accessibility 选择 No),模拟私有子网中的 RDS。


在 AWS RDS 中创建一个 RDS 数据库,如果不知道如何创建 AWS RDS 数据库请参照此文,数据库引擎版本选择 8.0.11 或以上。记住选择的 VPC 和安全组,下一步配置 Glue 的时候需要用到。


本次测试数据是由TPC-DS生成的,建表 DDL 如下:


SQL


CREATE TABLE `catalog_sales`(  `cs_sold_date_sk` bigint,   `cs_sold_time_sk` bigint,   `cs_ship_date_sk` bigint,   `cs_bill_customer_sk` bigint,   `cs_bill_cdemo_sk` bigint,   `cs_bill_hdemo_sk` bigint,   `cs_bill_addr_sk` bigint,   `cs_ship_customer_sk` bigint,   `cs_ship_cdemo_sk` bigint,   `cs_ship_hdemo_sk` bigint,   `cs_ship_addr_sk` bigint,   `cs_call_center_sk` bigint,   `cs_catalog_page_sk` bigint,   `cs_ship_mode_sk` bigint,   `cs_warehouse_sk` bigint,   `cs_item_sk` bigint,   `cs_promo_sk` bigint,   `cs_order_number` bigint,   `cs_quantity` bigint,   `cs_wholesale_cost` double,   `cs_list_price` double,   `cs_sales_price` double,   `cs_ext_discount_amt` double,   `cs_ext_sales_price` double,   `cs_ext_wholesale_cost` double,   `cs_ext_list_price` double,   `cs_ext_tax double` double,   `cs_coupon_amt` double,   `cs_ext_ship_cost` double,   `cs_net_paid` double,   `cs_net_paid_inc_tax` double,   `cs_net_paid_inc_ship` double,   `cs_net_paid_inc_ship_tax` double,   `cs_net_profit double` double,  PRIMARY KEY ( `cs_item_sk`,`cs_order_number` ));
复制代码


SQL


CREATE TABLE `warehouse`(  `w_warehouse_sk` bigint,   `w_warehouse_id` VARCHAR(100) ,   `w_warehouse_name` VARCHAR(100) ,   `w_warehouse_sq_ft` bigint,   `w_street_number` bigint,   `w_street_name` VARCHAR(255) ,   `w_street_type` VARCHAR(255) ,   `w_suite_number` VARCHAR(255) ,   `w_city` VARCHAR(25) ,   `w_county` VARCHAR(25) ,   `w_state` VARCHAR(25) ,   `w_zip` bigint,   `w_country` VARCHAR(100) ,   `w_gmt_offset` bigint,  PRIMARY KEY ( `w_warehouse_sk` ));
复制代码


接下来插入一些测试数据


SQL


INSERT INTO warehouse VALUES(1,"AAAAAAAABAAAAAAA","Conventional childr",977787,651,"6th" ,"Parkway","Suite 470","Shiloh","San Miguel County","NM",89275,"United States",-7),(2,"AAAAAAAACAAAAAAA","Important issues liv",138504,600,"View First","Avenue","Suite P","Fairview","Ziebach County","SD",55709,"United States",-6),(3,"AAAAAAAADAAAAAAA","Doors canno",294242,534,"Ash Laurel","Dr.","Suite 0","Five Points","Ziebach County","SD",56098,"United States",-6),(4,"AAAAAAAAEAAAAAAA","Bad cards must make.",621234,368,"Wilson Elm","Drive","Suite 80","Five Points","Richland County","OH",46098,"United States",-5),(5,"AAAAAAAAAAAAAAA","Plain,reluctant",514427,410,"3rd" ,"ST","Suite 370","Shiloh","Ziebach County","SD",59275,"United States",-6),(6,"AAAAAAAAGAAAAAAA","Local,mass universi",838797,957,"Lincoln Adams","Dr.","Suite X","Five Points","Oglethorpe County","GA",36098,"United States",-5);
INSERT INTO catalog_sales VALUES (2452539 , 62417 , 2452614 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 20225 , 15 , 3 , 47071 , 1169 , 144033688 , 77 , 49.08 , 130.55 , 60.05 , 5428.5 , 4623.85 , 3779.16 , 10052.35 , 92.47 , 0.0 , 3417.26 , 4623.85 , 4716.32 , 8041.11 , 8133.58 , 844.69), (2452539 , 62417 , 2452595 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 20465 , 12 , 2 , 138789 , 122 , 144033688 , 25 , 76.99 , 147.82 , 0.0 , 3695.5 , 0.0 , 1924.75 , 3695.5 , 0.0 , 0.0 , 1330.25 , 0.0 , 0.0 , 1330.25 , 1330.25 , -1924.75), (2452539 , 62417 , 2452567 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 20354 , 18 , 5 , 75657 , 806 , 144033688 , 72 , 19.68 , 45.06 , 39.2 , 421.92 , 2822.4 , 1416.96 , 3244.32 , 169.34 , 0.0 , 875.52 , 2822.4 , 2991.74 , 3697.92 , 3867.26 , 1405.44), (2452539 , 62417 , 2452612 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 20606 , 9 , 1 , 279408 , 588 , 144033688 , 70 , 97.07 , 125.22 , 102.68 , 1577.8 , 7187.6 , 6794.9 , 8765.4 , 431.25 , 0.0 , 1489.6 , 7187.6 , 7618.85 , 8677.2 , 9108.45 , 392.7), (2452539 , 62417 , 2452624 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 22191 , 3 , 1 , 13807 , 811 , 144033688 , 75 , 78.43 , 112.93 , 60.98 , 3896.25 , 4573.5 , 5882.25 , 8469.75 , 411.61 , 0.0 , 3557.25 , 4573.5 , 4985.11 , 8130.75 , 8542.36 , -1308.75), (2452539 , 62417 , 2452580 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 22277 , 19 , 2 , 23745 , 1165 , 144033688 , 26 , 29.46 , 68.34 , 33.48 , 906.36 , 870.48 , 765.96 , 1776.84 , 0.0 , 0.0 , 124.28 , 870.48 , 870.48 , 994.76 , 994.76 , 104.52), (2452539 , 62417 , 2452548 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 20314 , 8 , 2 , 131695 , 7 , 144033688 , 34 , 85.14 , 136.22 , 19.07 , 3983.1 , 648.38 , 2894.76 , 4631.48 , 25.93 , 0.0 , 555.56 , 648.38 , 674.31 , 1203.94 , 1229.87 , -2246.38), (2452539 , 62417 , 2452570 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 20462 , 17 , 1 , 218911 , 1484 , 144033688 , 48 , 48.35 , 88.96 , 61.38 , 1323.84 , 2946.24 , 2320.8 , 4270.08 , 0.0 , 0.0 , 2135.04 , 2946.24 , 2946.24 , 5081.28 , 5081.28 , 625.44), (2452539 , 62417 , 2452603 , 4961658 , 370240 , 5575 , 2777357 , 4961658 , 370240 , 5575 , 2777357 , 30 , 22370 , 18 , 6 , 172341 , 622 , 144033688 , 74 , 43.45 , 122.96 , 33.19 , 6642.98 , 2456.06 , 3215.3 , 9099.04 , 49.12 , 0.0 , 2274.76 , 2456.06 , 2505.18 , 4730.82 , 4779.94 , -759.24), (2452539 , 16946 , 2452624 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20277 , 4 , 3 , 136947 , 641 , 144033689 , 93 , 34.76 , 74.73 , 17.18 , 5352.15 , 1597.74 , 3232.68 , 6949.89 , 63.9 , 0.0 , 764.46 , 1597.74 , 1661.64 , 2362.2 , 2426.1 , -1634.94), (2452539 , 16946 , 2452609 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20469 , 8 , 6 , 82428 , 2 , 144033689 , 58 , 9.84 , 10.13 , 6.17 , 229.68 , 357.86 , 570.72 , 587.54 , 14.31 , 0.0 , 158.34 , 357.86 , 372.17 , 516.2 , 530.51 , -212.86), (2452539 , 16946 , 2452580 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20386 , 18 , 1 , 105888 , 135 , 144033689 , 100 , 62.86 , 173.49 , 32.96 , 14053.0 , 3296.0 , 6286.0 , 17349.0 , 71.19 , 1516.16 , 1561.0 , 1779.84 , 1851.03 , 3340.84 , 3412.03 , -4506.16), (2452539 , 16946 , 2452613 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20559 , 4 , 6 , 109273 , 1327 , 144033689 , 22 , 60.04 , 64.84 , 27.23 , 827.42 , 599.06 , 1320.88 , 1426.48 , 17.97 , 0.0 , 670.34 , 599.06 , 617.03 , 1269.4 , 1287.37 , -721.82), (2452539 , 16946 , 2452587 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20634 , 9 , 1 , 100591 , 332 , 144033689 , 8 , 61.81 , 100.75 , 83.62 , 137.04 , 668.96 , 494.48 , 806.0 , 33.44 , 0.0 , 394.88 , 668.96 , 702.4 , 1063.84 , 1097.28 , 174.48), (2452539 , 16946 , 2452586 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20471 , 14 , 2 , 150157 , 855 , 144033689 , 50 , 80.2 , 144.36 , 135.69 , 433.5 , 6784.5 , 4010.0 , 7218.0 , 542.76 , 0.0 , 3464.5 , 6784.5 , 7327.26 , 10249.0 , 10791.76 , 2774.5 ), (2452539 , 16946 , 2452569 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20436 , 7 , 1 , 204859 , 576 , 144033689 , 27 , 41.17 , 112.8 , 109.41 , 91.53 , 2954.07 , 1111.59 , 3045.6 , 206.78 , 0.0 , 91.26 , 2954.07 , 3160.85 , 3045.33 , 3252.11 , 1842.48 ), (2452539 , 16946 , 2452627 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20730 , 1 , 4 , 76770 , 142 , 144033689 , 57 , 72.81 , 104.84 , 13.62 , 5199.54 , 776.34 , 4150.17 , 5975.88 , 15.52 , 0.0 , 537.51 , 776.34 , 791.86 , 1313.85 , 1329.37 , -3373.83 ), (2452539 , 16946 , 2452579 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20264 , 5 , 5 , 3381 , 104 , 144033689 , 26 , 96.86 , 213.09 , 196.04 , 443.3 , 5097.04 , 2518.36 , 5540.34 , 50.97 , 0.0 , 110.76 , 5097.04 , 5148.01 , 5207.8 , 5258.77 , 2578.68), (2452539 , 16946 , 2452611 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20238 , 10 , 2 , 226405 , 281 , 144033689 , 21 , 50.34 , 123.33 , 45.63 , 1631.7 , 958.23 , 1057.14 , 2589.93 , 0.0 , 95.82 , 595.56 , 862.41 , 862.41 , 1457.97 , 1457.97 , -194.73), (2452539 , 16946 , 2452564 , 4096275 , 861512 , 6396 , 60433 , 4096275 , 861512 , 6396 , 60433 , 24 , 20400 , 17 , 4 , 242191 , 711 , 144033689 , 4 , 39.54 , 48.63 , 4.37 , 177.04 , 17.48 , 158.16 , 194.52 , 0.87 , 0.0 , 5.8 , 17.48 , 18.35 , 23.28 , 24.15 , -140.68 )
复制代码


这两张表中的 w_warehouse_sk 和 cs_warehouse_sk 可做关联,用于后续的数据处理。

第二步:跨区域网络配置

如无跨区域的资源需要此步骤可省略。


由于 Glue 工作于宁夏区而数据源 RDS 在北京区。RDS 作为交易数据库通常位于私有子网,不连通互联网。所以需要调通 Glue 和 RDS 之间的网络配置。假设北京的 RDS 位于 VPC 1 (vpc-1111)网段为 10.0.0.0/16,AWS Glue 任务会使用 VPC 2(vpc-2222)网段为 172.31.0.0/16。网段不能重叠否则无法建立对等连接。


在北京区域的 VPC 控制台创建一个 VPC 对等连接,请求方为 vpc-1111,接收方为 vpc-2222。



创建完成后需要到宁夏区域 vpc-2222 的 VPC 控制台对等连接中接受此请求。等待状态变为绿色的“活动”,说明对等连接生效。



编辑 VPC-1111 的路由表,该路由表要关联给 RDS 所在的子网。加上 VPC-2222 的网段到对等连接的路由。



同理编辑 VPC-2222 的路由表,该路由表要关联给 Glue 指定的子网。加上 VPC-1111 的网段到对等连接的路由。



现在 VPC-1111 和 VPC-2222 之间的私有网络已经打通,如果对等连接配置有任何问题请参照官网


除了网络外,还需要配置安全组规则,对于 Glue 和 RDS 所在的网段开放。假设 RDS 使用安全组 sg-1111,Glue 将会使用安全组 sg-2222(如没有请先创建)。


Sg-1111 入站规则配置例子如下(出站全放开):



Sg-2222 入站规则配置例子如下(加一条对 sg-2222 全开入站规则,出站全放开):



第三步:配置 Glue 工作流

配置 AWS Glue 数据源连接

连接是为了指定 VPC,子网和安全组,以便 Glue 知道用什么样的网络配置通信。如果是访问非 VPC 内资源如 S3 则不需要创建连接。


1.登陆 AWS Glue 控制台,选择宁夏区,选择连接,创建一个新 MySQL 8 连接。



2.连接类型选择 JDBC,并把第一步中的 RDS JDBC url 用户名和密码填写上去,VPC,子网和安全组选择上一步中的 vpc-2222,绑定了路由表的任意子网和 sg-2222。注意:Glue 所在的子网需要有 S3 Endpoint 的路由。


创建成功连接后不要测试连接,因为 Glue 默认的 MySQL JDBC 驱动不支持 MySQL 8 版本。


配置 AWS Glue 作业

Glue 的作业是定义单个的 ETL 操作,接下来我们会定义三个作业:从 RDS 读取 catalog_sales,从 RDS 读取 warehouse,和聚合两张表。


1.选择宁夏区域,并选择添加作业



2.作业属性中的 IAM 角色选择一个带有 AmazonS3FullAccess 策略的角色,如没有请创建。其他配置如图所示。



3.在“安全配置、脚本库和作业参数(可选)”设置中配置作业参数,参数值之后可以改



4.下一步的连接选择前一步创建的 MySQL 8 连接。再下一步到脚本编辑页面,贴上如下脚本。点击保存并退出。同时下载mysql-connector-java-8.0.18.jar,并上传到 jdbcS3path 所指定的 S3 存储桶位置。


SQL


import sysfrom awsglue.transforms import *from awsglue.utils import getResolvedOptionsfrom pyspark.context import SparkContext, SparkConffrom awsglue.context import GlueContextfrom awsglue.job import Jobimport timefrom pyspark.sql.types import StructType, StructField, IntegerType, StringTypesc = SparkContext()glueContext = GlueContext(sc)spark = glueContext.spark_session
args = getResolvedOptions(sys.argv,['tablename','dbuser','dbpassword','dburl','jdbcS3path','s3OutputPath'])#改成自己的mysql8connection_mysql8_options = { "url": args['dburl'], "dbtable": args['tablename'], "user": args['dbuser'], "password": args['dbpassword'], "customJdbcDriverS3Path": args['jdbcS3path']+"mysql-connector-java-8.0.18.jar", #先编译jdbc jar 传到S3 "customJdbcDriverClassName": "com.mysql.cj.jdbc.Driver"}# 从MySQL中读取数据df_catalog = glueContext.create_dynamic_frame.from_options(connection_type="mysql",connection_options=connection_mysql8_options)#加上filter 一般增量加载可以按照更新时间来过滤df_filter = Filter.apply(frame = df_catalog, f = lambda x: x["cs_sold_date_sk"] >=2452539)#写入s3位置writer = glueContext.write_dynamic_frame.from_options(frame = df_filter, connection_type = "s3", connection_options = {"path": args['s3OutputPath']+args['tablename']}, format = "parquet")
复制代码


5.此任务把 RDS 里的 catalog_sales 表加载到 S3 中,同样的配置创建另一个作业加载 warehouse 表,更改作业配置和脚本。脚本如下:


SQL


import sysfrom awsglue.transforms import *from awsglue.utils import getResolvedOptionsfrom pyspark.context import SparkContext, SparkConffrom awsglue.context import GlueContextfrom awsglue.job import Jobimport timefrom pyspark.sql.types import StructType, StructField, IntegerType, StringTypesc = SparkContext()glueContext = GlueContext(sc)spark = glueContext.spark_session
args = getResolvedOptions(sys.argv,['tablename','dbuser','dbpassword','dburl','jdbcS3path','s3OutputPath'])connection_mysql8_options = { "url": args['dburl'], "dbtable": args['tablename'], "user": args['dbuser'], "password": args['dbpassword'], "customJdbcDriverS3Path": args['jdbcS3path']+"mysql-connector-java-8.0.18.jar", #先编译jdbc jar 传到S3 "customJdbcDriverClassName": "com.mysql.cj.jdbc.Driver"}# 从MySQL中读取数据df_warehouse = glueContext.create_dynamic_frame.from_options(connection_type="mysql",connection_options=connection_mysql8_options)#写入s3位置writer = glueContext.write_dynamic_frame.from_options(frame = df_warehouse, connection_type = "s3", connection_options = {"path": args['s3OutputPath']+args['tablename']}, format = "parquet")
复制代码



6.接下来还需要创建一个聚合任务,聚合两张表生成聚合表可以供报表查询。创建流程还是同上(连接不是必须选的,S3是公网资源),传入作业参数为
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline12.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline12.jpg)
脚本使用Glue中存储的S3数据结构,具体存储S3的数据结构将在爬网程序章节介绍。
SQL

复制代码


import sys


from awsglue.transforms import *


from awsglue.utils import getResolvedOptions


from pyspark.context import SparkContext, SparkConf


from awsglue.context import GlueContext


from awsglue.job import Job


import time


from pyspark.sql.types import StructType, StructField, IntegerType, StringType


sc = SparkContext()


glueContext = GlueContext(sc)


spark = glueContext.spark_session


args = getResolvedOptions(sys.argv,[‘s3OutputPath’])


df=spark.sql(“select w_warehouse_name, w_city,count(*) as cnt_sales, sum(cs_list_price) as total_revenue,sum(cs_net_profit_double) as total_net_profit,sum(cs_wholesale_cost) as total_cost from default.catalog_sales join default.warehouse on cs_warehouse_sk = w_warehouse_sk group by w_warehouse_name, w_city”)


df.write.mode(“overwrite”).format(“parquet”).save(args[‘s3OutputPath’]+“warehouse_report/”)



### 创建爬网程序
数据在S3上之后失去了在数据库中的表结构,爬网程序则是爬取S3中数据的表结构并能使其他程序如Apache Presto或者Amazon Athena直接查询S3中的数据。下面我们将配置一个爬网程序爬取刚刚加载到S3中的catalog_sales 和warehouse的数据结构。
1.创建新的爬网程序
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline13.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline13.jpg)
2.选择S3位置,如果两张表放在同一个文件夹路径下,可以提供共同的父路径。如果没有共享父路径可以逐一添加。
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline14.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline14.jpg)
3.IAM角色可以选择和Glue 工作一样的(需要S3的读权限),计划选择按需,输出数据库可以选择default。其他可以保持默认。
4.如果Glue RDS工作完成后,运行爬网程序并成功后可以看到Glue的数据目录中可以看到两张表:
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline15.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline15.jpg)
### 创建Glue工作流
如果需要编排复杂的数据处理流程则需要处理任务之间的依赖关系,Glue的工作流程功能可以解决上下游依赖及定时问题。
1.首先创建一个工作流程
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline16.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline16.jpg)
2.创建好后在工作流程中添加一个按需的触发器作为起始点
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline17.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline17.jpg)[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline18.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline18.jpg)
3.再添加了之前创建的两个RDS摄取工作,Glue工作和工作之间需要触发器串联,接下来添加一个事件触发器
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline19.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline19.jpg)
4.触发器选择事件触发,并且要选择All监视事件后出发,这个触发器会同时用于两个RDS工作。
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline20.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline20.jpg)
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline21.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline21.jpg)
5.接下来在触发器后添加爬网程序,后触发聚合Glue工作,完成的工作流程如下。
[](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline22.png)](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline22.jpg)
可根据需要在聚合任务后在添加一个爬网程序来爬取新生成表的结构。
终于我们完成一个完整的ETL处理流程的创建了。由于工作流程的起始触发器是按需,所以需要手动选择工作流程并在操作中选择运行。如果需要定时任务,则可以把起始触发器修改为定时类型。用Glue爬好的S3表可以直接被Amazon Athena服务查询哟,感兴趣的快去试一试吧!
**作者介绍:**贺浏璐,AWS解决方案架构师,负责AWS云计算方案的咨询和架构设计,同时致力于大数据方面的研究和应用。曾担任亚马逊大数据团队数据工程师,在大数据架构,数据管道业务处理,和Business Intelligence方面有丰富的实操经验。
**原文链接:**https://amazonaws-china.com/cn/blogs/china/quickly-build-an-aws-glue-based-extracting-cross-region-mysql-8-data-pipeline/
复制代码


2020-03-04 20:52835

评论

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

【LeetCode】最长公共前缀Java题解

Albert

LeetCode 10月月更

如何在 SAP BTP Java 应用里使用 SQLite 数据库

汪子熙

云原生 云平台 SAP 10月月更 btp

使用 Zpan 搭建低成本个人私有网盘,还不限速

华为云开发者联盟

云计算 华为云 网盘 企业号十月 PK 榜

技术分享 | app自动化测试(Android)--显式等待机制

霍格沃兹测试开发学社

技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别

霍格沃兹测试开发学社

技术分享 | app自动化测试(Android)-- 属性获取与断言

霍格沃兹测试开发学社

技术分享 | 常见接口协议解析

霍格沃兹测试开发学社

记录第二天-Vue起步

默默的成长

前端 Vue 3 10月月更

三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI

离北况归

OpenHarmony

十大 CI/CD 安全风险(三)

SEAL安全

DevOps CI/CD DevSecOps 软件供应链安全

Vue基础-插值表达式-数据驱动视图-指令系统

默默的成长

前端 Vue 3 10月月更

笔记本电脑内卷之争:华硕4+4无忧保脱颖而出

Geek_2d6073

干货 | 接口自动化测试分层设计与实践总结

霍格沃兹测试开发学社

技术分享 | app自动化测试(Android)-- 参数化用例

霍格沃兹测试开发学社

测试人生 | 疫情之下工资翻了2倍多,这4个月学习比工作8年学到的还多

霍格沃兹测试开发学社

EasyCV DataHub 提供多领域视觉数据集下载,助力模型生产

阿里云大数据AI技术

深度学习 开源 模型 计算机上视觉

启科量子开源量子编程框架 QuTrunk

启科量子开发者官方号

人工智能 开发工具 量子计算 量子技术 启科量子

技术分享 | 接口测试价值与体系

霍格沃兹测试开发学社

Java基础(三)| switch、循环及Random详解

timerring

Java random Switch 循环 10月月更

十问分布式数据库:技术趋势、选型及标准思考

OceanBase 数据库

6步搭建一个飞机大战游戏

华为云开发者联盟

云计算 软件开发 华为云 企业号十月PK榜

干货 | 测试专家(前阿里P8)聊测试职业发展常见瓶颈

霍格沃兹测试开发学社

Wave-2 802.11ac SoC for Routers, Gateways and Access Points//IPQ4019,IPQ4029,Wallys

wallys-wifi6

IPQ4019 ipq4029

StampedLock:一个并发编程中非常重要的票据锁

华为云开发者联盟

高并发 开发 华为云 企业号十月PK榜

技术分享 | app自动化测试(Android)-- Capability 使用进阶

霍格沃兹测试开发学社

技术分享 | 抓包分析 TCP 协议

霍格沃兹测试开发学社

搜索中常见数据结构与算法探究(二)

京东科技开发者

数据结构 算法 时间复杂度 KMP 算法与数据结构

VUE 初学者基础知识

默默的成长

Vue 前端 10月月更

一个值得深思的话题:Wi-Fi 7的诞生会不会取代 5G 网络?

wljslmz

5G 无线技术 10月月更 WiFi7

2022Q3消费级AR眼镜市场季度分析:国产品牌纷纷发力,市场全面启航

易观分析

科技 AR眼镜 季度报告

还在为如何编写Web自动化测试用例而烦恼嘛?资深测试工程师手把手教你Selenium 测试用例编写

霍格沃兹测试开发学社

快速构建基于 AWS Glue 的抽取跨区域 MySQL 8 的数据管道_文化 & 方法_AWS_InfoQ精选文章