

# 开发自定义连接器


您可以编写从数据存储中读取数据或向数据存储写入数据的代码，并将数据格式化以用于 AWS Glue Studio 任务。您可以为 Spark、Athena 和 JDBC 数据存储创建连接器。GitHub 上发布的示例代码概述了您需要实现的基本接口。

您需要用于创建连接器代码的本地开发环境。您可以使用任意 IDE，甚至只使用命令行编辑器来编写连接器。开发环境示例包括：
+ 具有本地 AWS Glue ETL Maven 库的本地 Scala 环境，正如《AWS Glue 开发人员指南》**中的[使用 Scala 本地开发](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html#develop-local-scala)所述。
+ IntelliJ IDE，可从 [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/) 下载 IDE。

**Topics**
+ [

## 开发 Spark 连接器
](#code-spark-connector)
+ [

## 开发 Athena 连接器
](#code-athena-connector)
+ [

## 开发 JDBC 连接器
](#code-jdbc-connector)
+ [

## 将自定义连接器与 AWS Glue Studio 结合使用的示例
](#custom-connector-examples)
+ [

## 为 AWS Marketplace 开发 AWS Glue 连接器
](#code-marketplace-connector)

## 开发 Spark 连接器


您可以使用 Spark DataSource API V2（Spark 2.4）创建 Spark 连接器来读取数据。

**若要创建自定义 Spark 连接器**

按照 AWS Glue GitHub 示例库中的步骤开发 Spark 连接器，该库位于 [https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/README.md](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/README.md)。

## 开发 Athena 连接器


您可以创建 Athena 连接器，供 AWS Glue 和 AWS Glue Studio 查询自定义数据源。

**若要创建自定义 Athena 连接器**

按照 AWS Glue GitHub 示例库中的步骤开发 Athena 连接器，该库位于 [https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena)。

## 开发 JDBC 连接器


您可以创建使用 JDBC 访问数据存储的连接器。

**创建自定义 JDBC 连接器**

1. 在本地开发环境中安装 AWS Glue Spark 运行时库。请参阅 AWS Glue GitHub 示例库中的说明，该库位于 [ https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/GlueSparkRuntime/README.md](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/GlueSparkRuntime/README.md)。

1. 实施负责从数据源检索数据的 JDBC 驱动程序。请参阅适用于 Java SE 8 的 [Java 文档](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/)。

   在您的代码内创建入口点，AWS Glue Studio 将其用于查找您的连接器。**Class name (类名称)** 字段应该是 JDBC 驱动程序的完整路径。

1. 借助连接器使用 `GlueContext` API 读取数据。用户可以在 AWS Glue Studio 控制台中添加更多输入选项，配置与数据源的连接（如有必要）。有关演示如何使用自定义 JDBC 连接器读取和写入 JDBC 数据库的代码示例，请参阅[自定义和 AWS Marketplace connectionType 值](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-market)。

## 将自定义连接器与 AWS Glue Studio 结合使用的示例


有关使用自定义连接器的示例，您可以参考以下博客：
+ [为带有 AWS Glue 的数据存储开发、测试和部署自定义连接器](https://aws.amazon.com/blogs/big-data/developing-testing-and-deploying-custom-connectors-for-your-data-stores-with-aws-glue/)
+ Apache Hudi：[使用 AWS Glue 自定义连接器写入 Apache Hudi 表](https://aws.amazon.com/blogs/big-data/writing-to-apache-hudi-tables-using-aws-glue-connector/)
+ Google BigQuery：[使用 AWS Glue 自定义连接器，将数据从 Google BigQuery 迁移到 Amazon S3](https://aws.amazon.com/blogs/big-data/migrating-data-from-google-bigquery-to-amazon-s3-using-aws-glue-custom-connectors/)
+ Snowflake（JDBC）：[使用 Snowflake 和 AWS Glue 执行数据转换](https://aws.amazon.com/blogs/big-data/performing-data-transformations-using-snowflake-and-aws-glue/)
+ SingleStore：[使用 SingleStore 和 AWS Glue 构建快速 ETL](https://aws.amazon.com/blogs/big-data/building-fast-etl-using-singlestore-and-aws-glue/)
+ Salesforce：[使用 CData JDBC 自定义连接器和 AWS Glue 将 Salesforce 数据提取到 Amazon S3](https://aws.amazon.com/blogs/big-data/ingest-salesforce-data-into-amazon-s3-using-the-cdata-jdbc-custom-connector-with-aws-glue) - 
+ MongoDB：[使用 Amazon DocumentDB（与 MongoDB 兼容）和 MongoDB 构建 AWS Glue Spark ETL 任务](https://aws.amazon.com/blogs/big-data/building-aws-glue-spark-etl-jobs-using-amazon-documentdb-with-mongodb-compatibility-and-mongodb/)
+ Amazon Relational Database Service（Amazon RDS）：[使用您自己的适用于 Amazon RDS 的 JDBC 驱动程序构建 AWS Glue Spark ETL 任务 ](https://aws.amazon.com/blogs/big-data/building-aws-glue-spark-etl-jobs-by-bringing-your-own-jdbc-drivers-for-amazon-rds/)
+ MySQL（JDBC）：[https://github.com/aws-samples/aws-glue-samples/blob/master/GlueCustomConnectors/development/Spark/SparkConnectorMySQL.scala](https://github.com/aws-samples/aws-glue-samples/blob/master/GlueCustomConnectors/development/Spark/SparkConnectorMySQL.scala)

## 为 AWS Marketplace 开发 AWS Glue 连接器


作为 AWS 合作伙伴，您可以创建自定义连接器并将其上载到 AWS Marketplace 以销售给 AWS Glue 客户。

开发连接器代码的过程与自定义连接器相同，但上载和验证连接器代码的过程更为详细。请参阅 GitHub 网站上[为 AWS Marketplace 创建连接器](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/marketplace/publishGuide.pdf)中的说明。