二、数据处理
大纲
2.1、简易架构

2.2、Glue连接创建
此处提供了RedShift和PG数据库的连接创建过程,请自行选择。
2.2.1、 创建RedShift连接
前置条件:需要有一台RedShift实例
此处跳过了RedShift的创建过程,RedShift需要创建一个终端节点,请看:Glue连接RedShift的前置条件:创建终端节点
由于Glue Job 在运行的时候,是在独立的服务器上,因此不能直接访问到私有子网中的服务,所以,借助Glue连接,可以使得Job在运行时连接AWS服务。
| 步骤 | 图例 |
|---|---|
| 1、创建连接 | ![]() |
| 2、输入连接名称,连接类型选择“Amazon Redshift” | ![]() |
| 3、选择RedShift集群,输入配置的用户名密码 | ![]() |
| 4、审核 | ![]() |
| 5、测试连接 | ![]() |
2.2.2、创建RDS连接(以PG为例)
| 步骤 | 图例 |
|---|---|
| 1、入口 | ![]() |
| 2 、输入连接名称,连接类型选择“JDBC” | ![]() |
| 3、输入连接PG的JDBC,语法请看使用连接,输入用户名密码,VPC和子网需要选择PG的VPC和子网。并且至少一个选定的安全组必须为所有 TCP 端口指定自引用入站规则 | ![]() |
| 4、检查无误后完成 | ![]() |
2.3、Glue Job创建
| 步骤 | 图例 |
|---|---|
| 1、入口 | ![]() |
| 2、若要在Job中引入其他python包,请在安全配置里面添加作业参数:–additional-python-modules:SQLAlchemy== 1.3.16,psycopg2-binary==2.8.5(值请自定义) | ![]() |
| 3 | ![]() |
2.4、编写脚本
2.4.1 、以RedShift为例
import sys
import datetime
import boto3
import base64
from pyspark.sql import DataFrame, Row
from pyspark.context import SparkContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue import *
import json
import datetime
import time
args = getResolvedOptions(sys.argv, ['TempDir','JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
sourceData = glueContext.create_data_frame.from_catalog( \
database = "【你的数据库名称】", \
table_name = "【表的名称】", \
transformation_ctx = "datasource0", \
additional_options = {
"startingPosition": "TRIM_HORIZON", "inferSchema": "true"})
LINCAN_SHARE_PAGE = "lincan_share_page"
share_page_dot = [
("url","string","url","string"),
("ip","string","ip","string"),
("country","string","country","string"),
("city","string","city","string"),
("user_id","string","user_id","string"),
("dot_type","string","dot_type","string"),
("header","string","header","string"),
("header_appname","string","header_appname","string"),
("header_ismobile","string","header_ismobile","string"),
("header_appversion",

本文详细介绍了如何使用AWSGlue在AmazonRedShift和PostgreSQL(RDS)上创建连接,以及如何使用GlueJob编写脚本来处理数据,包括从KinesisDataStream获取数据并进行实时微批量处理的过程。












6871

被折叠的 条评论
为什么被折叠?



