AWS 胶水是从亚马逊的 ETL 服务, 使您可以轻松地准备和加载您的数据存储和分析。使用 PySpark 模块连同 AWS 胶水, 您可以创建使用 JDBC 连接数据的作业, 将数据直接加载到 AWS 数据存储区。在本文中, 我们将 Cloudant 的 CData JDBC 驱动程序上载到亚马逊 S3 桶中, 并创建并运行一个 AWS 胶水作业, 以提取 Cloudant 数据并将其存储在 S3 中作为 CSV 文件。

将 CData JDBC 驱动程序上载到亚马逊 S3 桶 Cloudant

为了在 AWS Cloudant 中使用 CData JDBC 驱动程序, 您需要将其 (以及任何相关的许可证文件) 存储在亚马逊 S3 中的一个桶中。

  1. 打开亚马逊 S3 控制台。
  2. 选择一个现有的桶 (或创建一个新的水桶)。
  3. 点击上传
  4. 在驱动程序的安装位置中, 选择在 lib 目录中找到的 JAR 文件 (cdata.jdbc.cloudant.jar)。

配置亚马逊胶水作业

  1. 从 AWS 胶水控制台导航到 ETL > 作业。
  2. 单击 “添加作业” 以创建新的胶水作业。
  3. 填写作业属性:
    • 名称:填写作业的名称, 例如 CloudantGlueJob。
    • IAM 角色:选择 (或创建) 具有 AWSGlueServiceRole 和 AmazonS3FullAccess 的 IAM 角色 (因为 JDBC 驱动程序和目标位于亚马逊 S3 桶) 权限策略中。
    • 此作业运行:选择 “要由您创作的新脚本”。
      填充脚本属性:
      • 脚本文件名称:脚本文件的名称, 例如 GlueCloudantJDBC
      • 存储脚本的 S3 路径:填写或浏览到 S3 桶。
      • 临时目录:填写或浏览到 S3 桶。
    • 展开脚本库和作业参数 (可选)。对于从属 jar 路径, 请填写或浏览到加载 JAR 文件的 S3 桶。
  4. 单击 “下一步”。在这里, 您可以选择添加到其他 AWS 终结点的连接, 因此, 如果您的目标是红移、MySQL 等, 则可创建和使用与这些数据源的连接。
  5. 单击 “下一步” 查看作业配置。
  6. 单击 “完成” 将创建作业。
  7. 在打开的编辑器中, 为作业编写 Python 脚本。您可以使用示例脚本 (如下所示) 作为示例。

示例粘附脚本

要使用 CData JDBC 驱动程序连接到 Cloudant, 您需要创建一个 JDBC URL, 以填充必要的连接属性。另外 (除非您使用的是 Beta 驱动程序), 否则您需要在 JDBC URL 中设置 RTK 属性。您可以查看安装中包含的授权文件, 以获取有关如何设置此属性的信息。

设置以下连接属性以连接到 Cloudant:

  • 用户: 将此设置为您的用户名。
  • 密码: 将其设置为密码。

下面是一个示例脚本, 它使用 CData JDBC 驱动程序与 PySpark 和 AWSGlue 模块一起提取 Cloudant 数据并将其写入 CSV 格式的 S3 桶中。对需要的脚本进行任何更改, 以满足您的需要并保存该作业。

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job

args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sparkContext = SparkContext()
glueContext = GlueContext(sparkContext)
sparkSession = glueContext.spark_session

##Use the CData JDBC driver to read Cloudant data from the Movies table into a DataFrame
##Note the populated JDBC URL and driver class name
source_df = sparkSession.read.format("jdbc").option("url","jdbc:cloudant:RTK=5246...;User=abc123; Password=abcdef;").option("dbtable","Movies")

jdbc.cloudant.CloudantDriver “). 加载 () glueJob = 作业 (glueContext) glueJob. init (参数 [‘ JOB_NAME ‘], 参数) # #Convert DataFrames 到 AWS 胶水的 DynamicFrames 对象 dynamic_dframe = DynamicFrame fromDF (source_df, glueContext,” dynamic_df “) # #WriteDynamicFrame 文件以 CSV 格式存储到 S3 桶中的文件夹中。
# 通过使用以前定义的连接, #It 可以写入任何亚马逊数据存储区 (SQL server、红移等)。
retDatasink4 = glueContext. write_dynamic_frame from_options (框架 = dynamic_dframe, connection_type = “s3”, connection_options = {“路径”: “s3://mybucket/outfiles”}, 格式 = “csv”, transformation_ctx = “datasink4”) glueJob. 提交 ()

运行胶水作业

编写完脚本后, 我们就可以运行胶水作业了。单击 “运行作业”, 等待提取/加载完成。您可以从 AWS 胶水控制台中的 “作业” 页查看作业的状态。一旦作业成功, 您的 S3 桶中将有一个 CSV 文件, 其中有 Cloudant 电影表中的数据。

使用 CData JDBC 驱动程序在 AWS 胶水中 Cloudant, 您可以轻松地为 Cloudant 数据创建 ETL 作业、将数据写入 S3 桶或将其加载到任何其他 AWS 数据存储区中。

Comments are closed.