

# 사용자 정의 커넥터 개발
<a name="developing-custom-connectors"></a>

데이터 스토어에서 데이터를 읽거나 데이터를 쓰고 AWS Glue Studio 작업에 사용할 데이터를 포맷하는 코드를 작성할 수 있습니다. Spark, Athena 및 JDBC 데이터 스토어용 커넥터를 생성할 수 있습니다. GitHub에 게시된 샘플 코드는 구현해야 하는 기본 인터페이스에 대한 개요를 제공합니다.

커넥터 코드를 생성하려면 로컬 개발 환경이 필요합니다. 모든 IDE 또는 명령줄 편집기를 사용하여 커넥터를 작성할 수 있습니다. 개발 환경의 예는 다음과 같습니다.
+ *AWS Glue Developer Guide*의 [Developing Locally with Scala](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html#develop-local-scala)에 설명된 대로 로컬 AWS Glue ETL Maven 라이브러리가 있는 로컬 Scala 환경.
+ IntelliJ IDE([https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/)에서 다운로드).

**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>

AWS Glue 및 AWS Glue Studio에서 사용자 지정 데이터 원본을 쿼리하는 데 사용할 Athena 커넥터를 생성할 수 있습니다.

**사용자 정의 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 데이터베이스에서 읽고 쓰는 방법을 보여주는 코드 예제는 [사용자 정의 및 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에서 사용자 지정 커넥터를 사용하는 예제
<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: [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:[AWS Glue와 함께 CData JDBC 사용자 정의 커넥터를 사용하여 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 커넥터 개발
<a name="code-marketplace-connector"></a>

AWS 파트너는 사용자 정의 커넥터를 생성하고 AWS Marketplace에 업로드하여 AWS Glue 고객에게 판매할 수 있습니다.

커넥터 코드를 개발하는 프로세스는 사용자 정의 커넥터와 동일하지만 커넥터 코드를 업로드하고 확인하는 프로세스가 더 세부적입니다. GitHub 웹 사이트의 [AWS Marketplace용 커넥터 생성](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/marketplace/publishGuide.pdf)의 지침을 참조하세요.