

# 작업 스크립트 편집 또는 업로드
<a name="edit-nodes-script"></a>

AWS Glue Studio 시각적 편집기를 사용하여 작업 스크립트를 편집하거나 고유한 스크립트를 업로드합니다.

작업이 AWS Glue Studio로 생성된 경우에만 시각적 편집기를 사용하여 작업 노드를 편집할 수 있습니다. 작업이 AWS Glue 콘솔, API 명령 또는 명령줄 인터페이스(CLI)로 생성된 경우 AWS Glue Studio의 스크립트 편집기를 사용하여 작업 스크립트, 파라미터, 일정을 편집할 수 있습니다. 작업을 스크립트 전용 모드로 변환하여 AWS Glue Studio에서 생성된 작업의 스크립트를 편집할 수도 있습니다.

**작업 스크립트를 편집하거나 자체 스크립트를 업로드하려면**

1. 새 작업을 생성하는 경우 [**작업(Jobs)**] 페이지에서 [**Spark 스크립트 편집기(Spark script editor)**] 옵션을 선택하여 Spark 작업을 생성하거나 [**Python 셸 스크립트 편집기(Python Shell script editor)**]를 선택하여 Python 셸 작업을 생성합니다. 새 스크립트를 작성하거나 기존 스크립트를 업로드할 수 있습니다. [**Spark 스크립트 편집기(Spark script editor)**]를 선택하면 Scala 또는 Python 스크립트를 작성하거나 업로드할 수 있습니다. [**Python Shell 스크립트 편집기(Python Shell script editor)**]를 선택하면 Python 스크립트만 작성하거나 업로드할 수 있습니다.

   새 작업을 만드는 옵션을 선택한 후 나타나는 [**옵션(Options)**] 섹션에서 시작 스크립트로 시작하거나([**표준 문안 코드로 새 스크립트 생성(Create a new script with boilerplate code)**]) 작업 스크립트로 사용할 로컬 파일을 업로드할 수 있습니다.

   [**Spark 스크립트 편집기(Spark script editor)**]를 선택한 경우 Python 또는 Scala 스크립트 파일을 업로드할 수 있습니다. Scala 스크립트는 파일 확장명이 `.scala`여야 합니다. Python 스크립트는 Python 유형의 파일로 인식되어야 합니다. [**Python Shell 스크립트 편집기(Python Shell script editor)**]를 선택하면 Python 스크립트 파일만 업로드할 수 있습니다.

   선택을 마쳤으면 [**생성(Create)**]을 선택하여 작업을 생성하고 시각적 편집기를 엽니다.

1. 새 작업 또는 저장된 작업에 대한 시각적 작업 편집기로 이동한 다음 [**스크립트(Script)**] 탭을 선택합니다.

1. 스크립트 편집기 옵션 중 하나를 사용하여 새 작업을 생성하지 않았고 기존 작업에 대한 스크립트를 편집한 적이 없는 경우 [**스크립트(Script)**] 탭에 머리글 [**스크립트(잠김)(Script (Locked))**]가 표시됩니다. 이는 스크립트 편집기가 읽기 전용 모드임을 의미합니다. [**스크립트 편집(Edit script)**]을 선택하여 편집할 스크립트의 잠금을 해제합니다.

   스크립트를 편집 가능하게 만들기 위해 AWS Glue Studio는 작업을 시각적 작업에서 스크립트 전용 작업으로 변환합니다. 편집을 위해 스크립트를 잠금 해제하면 저장한 후 이 작업에 대해 더 이상 시각적 편집기를 사용할 수 없습니다.

   확인 창에서 [**확인(Confirm)**]을 선택하여 계속하거나 [**취소(Cancel)**]를 선택하여 작업을 시각적 편집에 사용할 수 있도록 유지합니다.

   [**확인(Confirm)**]를 선택하면 [**시각적(Visual)**] 탭이 더 이상 편집기에 표시되지 않습니다. AWS Glue Studio를 사용하여 스크립트 편집기로 스크립트를 수정하거나, 작업 세부 정보 또는 일정을 수정하거나, 작업 실행을 볼 수 있습니다.
**참고**  
작업을 저장할 때까지 스크립트 전용 작업으로의 변환은 영구적이지 않습니다. 콘솔 웹 페이지를 새로 고치거나 저장하기 전에 작업을 다고 시각적 편집기에서 다시 열면 시각적 편집기에서 개별 노드를 계속 편집할 수 있습니다.

1. 필요에 따라 스크립트를 편집합니다.

   스크립트 편집을 마치면 [**저장(Save)**]을 선택하여 작업을 저장하고 시각적 객체에서 스크립트 전용으로 작업을 영구적으로 변환합니다.

1. (선택 사항) AWS Glue Studio 콘솔의 **스크립트(Script)** 탭에서 **다운로드(Download)** 버튼을 선택하여 스크립트를 다운로드할 수 있습니다. 이 버튼을 선택하면 새 브라우저 창이 열리고 Amazon S3의 해당 위치에 있는 스크립트가 표시됩니다. 작업의 [**작업 세부 정보(Job details)**] 탭에 있는 [**스크립트 파일 이름(Script filename)**] 및 [**스크립트 경로(Script path)**] 파라미터는 Amazon S3에 있는 스크립트 파일의 이름과 위치를 결정합니다.  
![스크린샷은 작업 세부 정보(Job details) 탭이 선택된 AWS Glue Studio의 시각적 편집기를 보여줍니다. 페이지의 고급 속성 섹션이 확장되고 스크립트 파일 이름 및 스크립트 경로 파라미터가 표시됩니다. 스크립트 파일 이름 필드에 Join test job.py가 표시되고 스크립트 경로 필드에 s3://aws-glue-assets-111122223333-u가 표시됩니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/job-details-script-location-params-screenshot.png)

   작업을 저장할 때 AWS Glue는 이 필드에서 지정한 위치에 작업 스크립트를 저장합니다. Amazon S3 내의 이 위치에서 스크립트 파일을 수정할 경우 AWS Glue Studio는 다음에 작업을 편집할 때 수정된 스크립트를 로드합니다.

## AWS Glue Studio에서 Scala 스크립트 생성 및 편집
<a name="edit-job-scala-script"></a>

작업 생성을 위해 스크립트 편집기를 선택하면 기본적으로 작업 프로그래밍 언어가 `Python 3`로 설정됩니다. 스크립트를 업로드하는 대신 새 스크립트를 작성하도록 선택할 경우 AWS Glue Studio는 Python으로 작성된 표준 문안 텍스트로 새 스크립트를 시작합니다. 대신 Scala 스크립트를 작성하려면 먼저 Scala를 사용하도록 스크립트 편집기를 구성해야 합니다.

**참고**  
Scala를 작업의 프로그래밍 언어로 선택하고 시각적 편집기를 사용하여 작업을 설계하면 생성된 작업 스크립트가 Scala로 작성되고 추가 작업이 필요하지 않습니다.

**AWS Glue Studio에서 새 Scala 스크립트를 작성하려면**

1. [**Spark 스크립트 편집기(Spark script editor)**] 옵션을 선택하여 새 작업을 생성합니다.

1. [**옵션(Options)**]에서 [**표준 문안 코드로 새 스크립트 생성(Create a new script with boilerplate code)**]을 선택합니다.

1. [**작업 세부 정보(Job details)**] 탭을 선택하고 [**언어(Language)**]를 `Scala`(`Python 3` 대신)로 설정합니다.
**참고**  
작업을 생성하기 위해 [**Spark 스크립트 편집기(Spark script editor)**] 옵션을 선택하면 작업의 [**유형(Type)**] 속성이 `Spark`로 자동 설정됩니다.

1. [**스크립트(Script)**] 탭을 클릭합니다.

1. Python 표준 문안 텍스트를 제거합니다. 다음 Scala 표준 문안 텍스트로 바꿀 수 있습니다.

   ```
   import com.amazonaws.services.glue.{DynamicRecord, GlueContext}
   import org.apache.spark.SparkContext
   import com.amazonaws.services.glue.util.JsonOptions
   import com.amazonaws.services.glue.util.GlueArgParser
   import com.amazonaws.services.glue.util.Job
   
   object MyScript {
     def main(args: Array[String]): Unit = {
       val sc: SparkContext = new SparkContext()
       val glueContext: GlueContext = new GlueContext(sc)
   
       }
   }
   ```

1. 편집기에서 Scala 작업 스크립트를 작성합니다. 필요에 따라 `import` 문을 더 추가합니다.

## AWS Glue Studio에서 Python 셸 작업 생성 및 편집
<a name="edit-job-python-shell"></a>

작업을 생성하기 위해 Python 셸 스크립트 편집기를 선택하면 기존 Python 스크립트를 업로드하거나 새 스크립트를 작성할 수 있습니다. 새 스크립트를 작성하도록 선택하면 표준 문안 코드가 새 Python 작업 스크립트에 추가됩니다.

**새 Python 셸 작업을 생성하려면**  
[AWS Glue Studio에서 작업 시작](edit-nodes-chapter.md#create-jobs-start)의 지침을 참조하세요.

Python 셸 작업에 지원되는 작업 속성은 Spark 작업에 지원되는 속성과 동일하지 않습니다. 다음 목록은 [**작업 세부 정보(Job details)**] 탭에서 Python 셸 작업에 사용 가능한 작업 파라미터의 변경 사항을 설명합니다.
+ 작업의 [**유형(Type)**] 속성은 `Python Shell`로 자동 설정되며 변경할 수 없습니다.
+ [**언어(Language)**] 대신 작업에 대한 [**Python 버전(Python version)**] 속성이 있습니다. 현재 AWS Glue Studio에서 생성된 Python 셸 작업은 Python 3.6을 사용합니다.
+ [**Glue 버전(Glue version)**] 속성은 Python 셸 작업에 적용되지 않으므로 사용할 수 없습니다.
+ [**작업자 유형(Worker type)**] 및 [**작업자 수(Number of workers)**] 대신 [**데이터 처리 장치(Data processing units)**] 속성이 표시됩니다. 이 작업 속성은 작업을 실행할 때 Python 셸에서 사용하는 DPU(데이터 처리 장치) 수를 결정합니다.
+ [**작업 북마크(Job bookmark)**] 속성은 Python 셸 작업에 지원되지 않기 때문에 사용할 수 없습니다.
+ [**고급 속성(Advanced properties)**]에서 Python 셸 작업에는 다음 속성을 사용할 수 없습니다.
  + **작업 지표**
  + **연속 로깅**
  + [**Spark UI**] 및 ]**Spark UI 로그 경로(Spark UI logs path)**]
  + 머리글 [**라이브러리(Libraries)**] 아래의 [**종속 jar 경로(Dependent jars path)**]