

# カスタムコネクタの開発
<a name="developing-custom-connectors"></a>

コードを記述すると、データストアとの間でデータの読み取りや書き込みを実行したり、AWS Glue Studio ジョブで使用するためにデータのフォーマットを行ったりできます。Spark、Athena、JDBC データストアのためのコネクタを作成できます。実装する必要がある基本的なインターフェイスの概要は、GitHub に掲載されているサンプルコードで提供しています。

コネクタコードを作成するには、ローカルの開発環境が必要です。コネクタを書き込むには、任意の IDE やコマンドラインエディタを使用することもできます。開発環境の例には以下があります。
+ ローカルの AWS Glue ETL Mavenライブラリを使用したローカル Scala 環境 (*AWS Glueデベロッパーガイド*の「[Developing Locally with Scala](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html#develop-local-scala)」を参照)。
+ [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/) からダウンロードして使用する、IntelliJ 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 コネクタの開発
<a name="code-spark-connector"></a>

Spark DataSource API V2 (Spark 2.4) を使用して、データ読み取りのために Spark コネクタを作成することができます。

**カスタム Spark コネクタを作成するには**

Spark コネクタ開発のための AWS Glue GitHub サンプルライブラリ ([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 コネクタの開発
<a name="code-athena-connector"></a>

Athena コネクタを作成し、AWS Glue および AWS Glue Studio でカスタムのデータソースをクエリするために使用できます。

**カスタムの Athena コネクタを作成するには**

Athena コネクタ開発のための AWS Glue GitHub サンプルライブラリ([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 コネクタの開発
<a name="code-jdbc-connector"></a>

データストアにアクセスするために、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 データベースとの間で読み取りおよび書き込みを行うコードの例については、「[Custom and AWS Marketplace connectionType values](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-market)」を参照してください。

## AWS Glue Studio でのカスタムコネクタ使用例
<a name="custom-connector-examples"></a>

カスタムコネクタの使用例については、次のブログを参照してください。
+ [AWS Glue を使用したデータストア用のカスタムコネクタの開発、テスト、およびデプロイ](https://aws.amazon.com/blogs/big-data/developing-testing-and-deploying-custom-connectors-for-your-data-stores-with-aws-glue/)
+ Apache Hudi: [Writing to Apache Hudi tables using AWS Glue Custom Connector](https://aws.amazon.com/blogs/big-data/writing-to-apache-hudi-tables-using-aws-glue-connector/)
+ Google BigQuery: [Migrating data from Google BigQuery to Amazon S3 using AWS Glue custom connectors](https://aws.amazon.com/blogs/big-data/migrating-data-from-google-bigquery-to-amazon-s3-using-aws-glue-custom-connectors/)
+ Snowflake (JDBC): [Performing data transformations using Snowflake and AWS Glue](https://aws.amazon.com/blogs/big-data/performing-data-transformations-using-snowflake-and-aws-glue/)
+ SingleStore: [Building fast ETL using SingleStore and AWS Glue](https://aws.amazon.com/blogs/big-data/building-fast-etl-using-singlestore-and-aws-glue/)
+ Salesforce:[ Ingest Salesforce data into Amazon S3 using the CData JDBC custom connector with AWS Glue](https://aws.amazon.com/blogs/big-data/ingest-salesforce-data-into-amazon-s3-using-the-cdata-jdbc-custom-connector-with-aws-glue) 
+ MongoDB: [Building AWS Glue Spark ETL jobs using Amazon DocumentDB (with MongoDB compatibility) and MongoDB](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): [Building AWS Glue Spark ETL jobs by bringing your own JDBC drivers for Amazon RDS ](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 コネクターの開発
<a name="code-marketplace-connector"></a>

AWS パートナーであれば、作成したカスタムコネクタを AWS Marketplace にアップロードし、それを AWS Glue のお客様に販売することができます

コネクタコードの開発プロセスは、カスタムコネクタの場合と同様です。ただし、コネクタコードのアップロードと検証のプロセスには、より詳細な要素が含まれます。手順については、GitHub ウェブサイトの「[ Creating Connectors for AWS Marketplace](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/marketplace/publishGuide.pdf)」を参照してください。