

# AWS Glue Exemplos do usando a AWS CLI
<a name="cli_glue_code_examples"></a>

Os exemplos de código a seguir mostram como realizar ações e implementar cenários comuns usando o AWS Command Line Interface com o AWS Glue.

*Ações* são trechos de código de programas maiores e devem ser executadas em contexto. Embora as ações mostrem como chamar perfis de serviço individuais, você pode ver as ações no contexto em seus cenários relacionados.

Cada exemplo inclui um link para o código-fonte completo, em que você pode encontrar instruções sobre como configurar e executar o código.

**Topics**
+ [Ações](#actions)

## Ações
<a name="actions"></a>

### `batch-stop-job-run`
<a name="glue_BatchStopJobRun_cli_topic"></a>

O código de exemplo a seguir mostra como usar `batch-stop-job-run`.

**AWS CLI**  
**Interromper execuções de tarefa**  
O exemplo `batch-stop-job-run` a seguir interrompe a execução de uma tarefa.  

```
aws glue batch-stop-job-run \
    --job-name {{"my-testing-job"}} \
    --job-run-id {{jr_852f1de1f29fb62e0ba4166c33970803935d87f14f96cfdee5089d5274a61d3f}}
```
Resultado:  

```
{
    "SuccessfulSubmissions": [
        {
            "JobName": "my-testing-job",
            "JobRunId": "jr_852f1de1f29fb62e0ba4166c33970803935d87f14f96cfdee5089d5274a61d3f"
        }
    ],
    "Errors": [],
    "ResponseMetadata": {
        "RequestId": "66bd6b90-01db-44ab-95b9-6aeff0e73d88",
        "HTTPStatusCode": 200,
        "HTTPHeaders": {
            "date": "Fri, 16 Oct 2020 20:54:51 GMT",
            "content-type": "application/x-amz-json-1.1",
            "content-length": "148",
            "connection": "keep-alive",
            "x-amzn-requestid": "66bd6b90-01db-44ab-95b9-6aeff0e73d88"
        },
        "RetryAttempts": 0
    }
}
```
Para obter mais informações, consulte [Execuções de trabalhos](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Para ver detalhes da API, consulte [BatchStopJobRun](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/batch-stop-job-run.html) na *Referência de comandos da AWS CLI*. 

### `create-connection`
<a name="glue_CreateConnection_cli_topic"></a>

O código de exemplo a seguir mostra como usar `create-connection`.

**AWS CLI**  
**Criar uma conexão para AWS armazenamentos de dados do Glue**  
O exemplo `create-connection` a seguir cria uma conexão no Catálogo de Dados do AWS Glue que fornece informações de conexão para armazenar dados Kafka.  

```
aws glue create-connection \
    --connection-input '{{{ \
        "Name":"conn-kafka-custom", \
        "Description":"kafka connection with ssl to custom kafka", \
        "ConnectionType":"KAFKA",  \
        "ConnectionProperties":{  \
            "KAFKA_BOOTSTRAP_SERVERS":"<Kafka-broker-server-url>:<SSL-Port>", \
            "KAFKA_SSL_ENABLED":"true", \
            "KAFKA_CUSTOM_CERT": "s3://bucket/prefix/cert-file.pem" \
        }, \
        "PhysicalConnectionRequirements":{ \
            "SubnetId":"subnet-1234", \
            "SecurityGroupIdList":["sg-1234"], \
            "AvailabilityZone":"us-east-1a"} \
    }}}' \
    --region {{us-east-1}}
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
```
Este comando não produz saída.  
Para obter mais informações, consulte [Defining Connections in the AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html) no *AWS Guia do Desenvolvedor do Glue*.  
+  Para ver detalhes da API, consulte [CreateConnection](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-connection.html) na *Referência de comandos da AWS CLI*. 

### `create-database`
<a name="glue_CreateDatabase_cli_topic"></a>

O código de exemplo a seguir mostra como usar `create-database`.

**AWS CLI**  
**Para criar um banco de dados**  
O exemplo `create-database` a seguir cria um banco de dados no Catálogo de Dados do AWS Glue.  

```
aws glue create-database \
    --database-input "{\"Name\":\"tempdb\"}" \
    --profile {{my_profile}} \
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
```
Este comando não produz saída.  
Para obter mais informações, consulte [Definir um banco de dados no seu Catálogo de Dados](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Para ver detalhes da API, consulte [CreateDatabase](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-database.html) na *Referência de comandos da AWS CLI*. 

### `create-job`
<a name="glue_CreateJob_cli_topic"></a>

O código de exemplo a seguir mostra como usar `create-job`.

**AWS CLI**  
**Para criar um trabalho para transformar dados**  
O exemplo de `create-job` a seguir cria um trabalho de streaming que executa um script armazenado no S3.  

```
aws glue create-job \
    --name {{my-testing-job}} \
    --role {{AWSGlueServiceRoleDefault}} \
    --command '{{{ \
        "Name": "gluestreaming", \
        "ScriptLocation": "s3://amzn-s3-demo-bucket/folder/" \
    }}}' \
    --region {{us-east-1}} \
    --output {{json}} \
    --default-arguments '{{{ \
        "--job-language":"scala", \
        "--class":"GlueApp" \
    }}}' \
    --profile {{my-profile}} \
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
```
Conteúdo de `test_script.scala`:  

```
import com.amazonaws.services.glue.ChoiceOption
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.ResolveSpec
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._

object GlueApp {
    def main(sysArgs: Array[String]) {
        val spark: SparkContext = new SparkContext()
        val glueContext: GlueContext = new GlueContext(spark)
        // @params: [JOB_NAME]
        val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
        Job.init(args("JOB_NAME"), glueContext, args.asJava)
        // @type: DataSource
        // @args: [database = "tempdb", table_name = "s3-source", transformation_ctx = "datasource0"]
        // @return: datasource0
        // @inputs: []
        val datasource0 = glueContext.getCatalogSource(database = "tempdb", tableName = "s3-source", redshiftTmpDir = "", transformationContext = "datasource0").getDynamicFrame()
        // @type: ApplyMapping
        // @args: [mapping = [("sensorid", "int", "sensorid", "int"), ("currenttemperature", "int", "currenttemperature", "int"), ("status", "string", "status", "string")], transformation_ctx = "applymapping1"]
        // @return: applymapping1
        // @inputs: [frame = datasource0]
        val applymapping1 = datasource0.applyMapping(mappings = Seq(("sensorid", "int", "sensorid", "int"), ("currenttemperature", "int", "currenttemperature", "int"), ("status", "string", "status", "string")), caseSensitive = false, transformationContext = "applymapping1")
        // @type: SelectFields
        // @args: [paths = ["sensorid", "currenttemperature", "status"], transformation_ctx = "selectfields2"]
        // @return: selectfields2
        // @inputs: [frame = applymapping1]
        val selectfields2 = applymapping1.selectFields(paths = Seq("sensorid", "currenttemperature", "status"), transformationContext = "selectfields2")
        // @type: ResolveChoice
        // @args: [choice = "MATCH_CATALOG", database = "tempdb", table_name = "my-s3-sink", transformation_ctx = "resolvechoice3"]
        // @return: resolvechoice3
        // @inputs: [frame = selectfields2]
        val resolvechoice3 = selectfields2.resolveChoice(choiceOption = Some(ChoiceOption("MATCH_CATALOG")), database = Some("tempdb"), tableName = Some("my-s3-sink"), transformationContext = "resolvechoice3")
        // @type: DataSink
        // @args: [database = "tempdb", table_name = "my-s3-sink", transformation_ctx = "datasink4"]
        // @return: datasink4
        // @inputs: [frame = resolvechoice3]
        val datasink4 = glueContext.getCatalogSink(database = "tempdb", tableName = "my-s3-sink", redshiftTmpDir = "", transformationContext = "datasink4").writeDynamicFrame(resolvechoice3)
        Job.commit()
    }
}
```
Resultado:  

```
{
    "Name": "my-testing-job"
}
```
Para obter mais informações, consulte [Criação de trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [CreateJob](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-job.html) na *Referência de comandos da AWS CLI*. 

### `create-table`
<a name="glue_CreateTable_cli_topic"></a>

O código de exemplo a seguir mostra como usar `create-table`.

**AWS CLI**  
**Exemplo 1: criar uma tabela para fluxo de dados do Kinesis**  
O exemplo `create-table` a seguir cria uma tabela no Catálogo de Dados do AWS Glue que descreve um fluxo de dados do Kinesis.  

```
aws glue create-table \
    --database-name {{tempdb}} \
    --table-input  '{{{"Name":"test-kinesis-input", "StorageDescriptor":{ \
            "Columns":[ \
                {"Name":"sensorid", "Type":"int"}, \
                {"Name":"currenttemperature", "Type":"int"}, \
                {"Name":"status", "Type":"string"}
            ], \
            "Location":"my-testing-stream", \
            "Parameters":{ \
                "typeOfData":"kinesis","streamName":"my-testing-stream", \
                "kinesisUrl":"https://kinesis.us-east-1.amazonaws.com" \
            }, \
            "SerdeInfo":{ \
                "SerializationLibrary":"org.openx.data.jsonserde.JsonSerDe"} \
        }, \
        "Parameters":{ \
            "classification":"json"} \
        }}}' \
    --profile {{my-profile}} \
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
```
Este comando não produz saída.  
Para obter mais informações, consulte [Definição de tabelas no catálogo de dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) no *Guia do desenvolvedor do AWS Glue*.  
**Exemplo 2: criar uma tabela para armazenamento de dados Kafka**  
O exemplo `create-table` a seguir cria uma tabela no Catálogo de Dados do AWS Glue que descreve um armazenamento de dados Kafka.  

```
aws glue create-table \
    --database-name {{tempdb}} \
    --table-input  '{{{"Name":"test-kafka-input", "StorageDescriptor":{ \
            "Columns":[ \
                {"Name":"sensorid", "Type":"int"}, \
                {"Name":"currenttemperature", "Type":"int"}, \
                {"Name":"status", "Type":"string"}
            ], \
            "Location":"glue-topic", \
            "Parameters":{ \
                "typeOfData":"kafka","topicName":"glue-topic", \
                "connectionName":"my-kafka-connection"
            }, \
            "SerdeInfo":{ \
                "SerializationLibrary":"org.apache.hadoop.hive.serde2.OpenCSVSerde"} \
        }, \
        "Parameters":{ \
            "separatorChar":","} \
        }}}' \
    --profile {{my-profile}} \
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
```
Este comando não produz saída.  
Para obter mais informações, consulte [Definição de tabelas no catálogo de dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) no *Guia do desenvolvedor do AWS Glue*.  
**Exemplo 3: criar uma tabela para armazenamento de dados AWS do S3**  
O exemplo `create-table` a seguir cria uma tabela no Catálogo de Dados do AWS Glue que descreve um armazenamento de dados do AWS Simple Storage Service (AWS S3).  

```
aws glue create-table \
    --database-name {{tempdb}} \
    --table-input  '{{{"Name":"s3-output", "StorageDescriptor":{ \
            "Columns":[ \
                {"Name":"s1", "Type":"string"}, \
                {"Name":"s2", "Type":"int"}, \
                {"Name":"s3", "Type":"string"}
            ], \
            "Location":"s3://bucket-path/", \
            "SerdeInfo":{ \
                "SerializationLibrary":"org.openx.data.jsonserde.JsonSerDe"} \
        }, \
        "Parameters":{ \
            "classification":"json"} \
        }}}' \
    --profile {{my-profile}} \
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
```
Este comando não produz saída.  
Para obter mais informações, consulte [Definição de tabelas no catálogo de dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [CreateTable](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/create-table.html) na *Referência de comandos da AWS CLI*. 

### `delete-job`
<a name="glue_DeleteJob_cli_topic"></a>

O código de exemplo a seguir mostra como usar `delete-job`.

**AWS CLI**  
**Para excluir um trabalho**  
O exemplo de `delete-job` a seguir exclui um trabalho que não é mais necessário.  

```
aws glue delete-job \
    --job-name {{my-testing-job}}
```
Resultado:  

```
{
    "JobName": "my-testing-job"
}
```
Para obter mais informações, consulte [Trabalhar com trabalhos no console do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [DeleteJob](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/delete-job.html) na *Referência de comandos da AWS CLI*. 

### `get-databases`
<a name="glue_GetDatabases_cli_topic"></a>

O código de exemplo a seguir mostra como usar `get-databases`.

**AWS CLI**  
**Para listar as definições de alguns ou de todos os bancos de dados no Catálogo de Dados do AWS Glue**  
O exemplo de `get-databases` a seguir retorna informações sobre os bancos de dados no Catálogo de Dados.  

```
aws glue get-databases
```
Resultado:  

```
{
    "DatabaseList": [
        {
            "Name": "default",
            "Description": "Default Hive database",
            "LocationUri": "file:/spark-warehouse",
            "CreateTime": 1602084052.0,
            "CreateTableDefaultPermissions": [
                {
                    "Principal": {
                        "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"
                    },
                    "Permissions": [
                        "ALL"
                    ]
                }
            ],
            "CatalogId": "111122223333"
        },
        {
            "Name": "flights-db",
            "CreateTime": 1587072847.0,
            "CreateTableDefaultPermissions": [
                {
                    "Principal": {
                        "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"
                    },
                    "Permissions": [
                        "ALL"
                    ]
                }
            ],
            "CatalogId": "111122223333"
        },
        {
            "Name": "legislators",
            "CreateTime": 1601415625.0,
            "CreateTableDefaultPermissions": [
                {
                    "Principal": {
                        "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"
                    },
                    "Permissions": [
                        "ALL"
                    ]
                }
            ],
            "CatalogId": "111122223333"
        },
        {
            "Name": "tempdb",
            "CreateTime": 1601498566.0,
            "CreateTableDefaultPermissions": [
                {
                    "Principal": {
                        "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"
                    },
                    "Permissions": [
                        "ALL"
                    ]
                }
            ],
            "CatalogId": "111122223333"
        }
    ]
}
```
Para obter mais informações, consulte [Definir um banco de dados no seu Catálogo de Dados](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [GetDatabases](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-databases.html) na *Referência de comandos da AWS CLI*. 

### `get-job-run`
<a name="glue_GetJobRun_cli_topic"></a>

O código de exemplo a seguir mostra como usar `get-job-run`.

**AWS CLI**  
**Para obter informações sobre uma execução de trabalho**  
O exemplo `get-job-run` a seguir recupera informações sobre uma execução de trabalho.  

```
aws glue get-job-run \
    --job-name {{"Combine legistators data"}} \
    --run-id {{jr_012e176506505074d94d761755e5c62538ee1aad6f17d39f527e9140cf0c9a5e}}
```
Resultado:  

```
{
    "JobRun": {
        "Id": "jr_012e176506505074d94d761755e5c62538ee1aad6f17d39f527e9140cf0c9a5e",
        "Attempt": 0,
        "JobName": "Combine legistators data",
        "StartedOn": 1602873931.255,
        "LastModifiedOn": 1602874075.985,
        "CompletedOn": 1602874075.985,
        "JobRunState": "SUCCEEDED",
        "Arguments": {
            "--enable-continuous-cloudwatch-log": "true",
            "--enable-metrics": "",
            "--enable-spark-ui": "true",
            "--job-bookmark-option": "job-bookmark-enable",
            "--spark-event-logs-path": "s3://aws-glue-assets-111122223333-us-east-1/sparkHistoryLogs/"
        },
        "PredecessorRuns": [],
        "AllocatedCapacity": 10,
        "ExecutionTime": 117,
        "Timeout": 2880,
        "MaxCapacity": 10.0,
        "WorkerType": "G.1X",
        "NumberOfWorkers": 10,
        "LogGroupName": "/aws-glue/jobs",
        "GlueVersion": "2.0"
    }
}
```
Para obter mais informações, consulte [Execuções de trabalhos](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [GetJobRun](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-job-run.html) na *Referência de comandos da AWS CLI*. 

### `get-job-runs`
<a name="glue_GetJobRuns_cli_topic"></a>

O código de exemplo a seguir mostra como usar `get-job-runs`.

**AWS CLI**  
**Para obter informações sobre todas as execuções de um trabalho**  
O exemplo `get-job-runs` a seguir recupera informações sobre execuções de trabalho para um trabalho.  

```
aws glue get-job-runs \
    --job-name {{"my-testing-job"}}
```
Resultado:  

```
{
    "JobRuns": [
        {
            "Id": "jr_012e176506505074d94d761755e5c62538ee1aad6f17d39f527e9140cf0c9a5e",
            "Attempt": 0,
            "JobName": "my-testing-job",
            "StartedOn": 1602873931.255,
            "LastModifiedOn": 1602874075.985,
            "CompletedOn": 1602874075.985,
            "JobRunState": "SUCCEEDED",
            "Arguments": {
                "--enable-continuous-cloudwatch-log": "true",
                "--enable-metrics": "",
                "--enable-spark-ui": "true",
                "--job-bookmark-option": "job-bookmark-enable",
                "--spark-event-logs-path": "s3://aws-glue-assets-111122223333-us-east-1/sparkHistoryLogs/"
            },
            "PredecessorRuns": [],
            "AllocatedCapacity": 10,
            "ExecutionTime": 117,
            "Timeout": 2880,
            "MaxCapacity": 10.0,
            "WorkerType": "G.1X",
            "NumberOfWorkers": 10,
            "LogGroupName": "/aws-glue/jobs",
            "GlueVersion": "2.0"
        },
        {
            "Id": "jr_03cc19ddab11c4e244d3f735567de74ff93b0b3ef468a713ffe73e53d1aec08f_attempt_2",
            "Attempt": 2,
            "PreviousRunId": "jr_03cc19ddab11c4e244d3f735567de74ff93b0b3ef468a713ffe73e53d1aec08f_attempt_1",
            "JobName": "my-testing-job",
            "StartedOn": 1602811168.496,
            "LastModifiedOn": 1602811282.39,
            "CompletedOn": 1602811282.39,
            "JobRunState": "FAILED",
            "ErrorMessage": "An error occurred while calling o122.pyWriteDynamicFrame.
                Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied;
                Request ID: 021AAB703DB20A2D;
                S3 Extended Request ID: teZk24Y09TkXzBvMPG502L5VJBhe9DJuWA9/TXtuGOqfByajkfL/Tlqt5JBGdEGpigAqzdMDM/U=)",
            "PredecessorRuns": [],
            "AllocatedCapacity": 10,
            "ExecutionTime": 110,
            "Timeout": 2880,
            "MaxCapacity": 10.0,
            "WorkerType": "G.1X",
            "NumberOfWorkers": 10,
            "LogGroupName": "/aws-glue/jobs",
            "GlueVersion": "2.0"
        },
        {
            "Id": "jr_03cc19ddab11c4e244d3f735567de74ff93b0b3ef468a713ffe73e53d1aec08f_attempt_1",
            "Attempt": 1,
            "PreviousRunId": "jr_03cc19ddab11c4e244d3f735567de74ff93b0b3ef468a713ffe73e53d1aec08f",
            "JobName": "my-testing-job",
            "StartedOn": 1602811020.518,
            "LastModifiedOn": 1602811138.364,
            "CompletedOn": 1602811138.364,
            "JobRunState": "FAILED",
            "ErrorMessage": "An error occurred while calling o122.pyWriteDynamicFrame.
                 Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied;
                 Request ID: 2671D37856AE7ABB;
                 S3 Extended Request ID: RLJCJw20brV+PpC6GpORahyF2fp9flB5SSb2bTGPnUSPVizLXRl1PN3QZldb+v1o9qRVktNYbW8=)",
            "PredecessorRuns": [],
            "AllocatedCapacity": 10,
            "ExecutionTime": 113,
            "Timeout": 2880,
            "MaxCapacity": 10.0,
            "WorkerType": "G.1X",
            "NumberOfWorkers": 10,
            "LogGroupName": "/aws-glue/jobs",
            "GlueVersion": "2.0"
        }
    ]
}
```
Para obter mais informações, consulte [Execuções de trabalhos](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [GetJobRuns](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-job-runs.html) na *Referência de comandos da AWS CLI*. 

### `get-job`
<a name="glue_GetJob_cli_topic"></a>

O código de exemplo a seguir mostra como usar `get-job`.

**AWS CLI**  
**Para recuperar informações sobre um trabalho**  
O exemplo de `get-job` a seguir recupera informações sobre um trabalho.  

```
aws glue get-job \
    --job-name {{my-testing-job}}
```
Resultado:  

```
{
    "Job": {
        "Name": "my-testing-job",
        "Role": "Glue_DefaultRole",
        "CreatedOn": 1602805698.167,
        "LastModifiedOn": 1602805698.167,
        "ExecutionProperty": {
            "MaxConcurrentRuns": 1
        },
        "Command": {
            "Name": "gluestreaming",
            "ScriptLocation": "s3://janetst-bucket-01/Scripts/test_script.scala",
            "PythonVersion": "2"
        },
        "DefaultArguments": {
            "--class": "GlueApp",
            "--job-language": "scala"
        },
        "MaxRetries": 0,
        "AllocatedCapacity": 10,
        "MaxCapacity": 10.0,
        "GlueVersion": "1.0"
    }
}
```
Para obter mais informações, consulte [Trabalhos](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [GetJob](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-job.html) na *Referência de comandos da AWS CLI*. 

### `get-plan`
<a name="glue_GetPlan_cli_topic"></a>

O código de exemplo a seguir mostra como usar `get-plan`.

**AWS CLI**  
**Obter o código gerado para mapear dados das tabelas de origem para as tabelas de destino**  
O código a seguir `get-plan` recupera o código gerado para mapear colunas da fonte de dados para o destino de dados.  

```
aws glue get-plan --mapping '{{[ \
    { \
        "SourcePath":"sensorid", \
        "SourceTable":"anything", \
        "SourceType":"int", \
        "TargetPath":"sensorid", \
        "TargetTable":"anything", \
        "TargetType":"int" \
    }, \
    { \
        "SourcePath":"currenttemperature", \
        "SourceTable":"anything", \
        "SourceType":"int", \
        "TargetPath":"currenttemperature", \
        "TargetTable":"anything", \
        "TargetType":"int" \
    }, \
    { \
        "SourcePath":"status", \
        "SourceTable":"anything", \
        "SourceType":"string", \
        "TargetPath":"status", \
        "TargetTable":"anything", \
        "TargetType":"string" \
    }]}}' \
    --source '{{{ \
        "DatabaseName":"tempdb", \
        "TableName":"s3-source" \
    }}}' \
    --sinks '{{[ \
        { \
            "DatabaseName":"tempdb", \
            "TableName":"my-s3-sink" \
        }]}}'
    --language {{"scala"}}
    --endpoint {{https://glue.us-east-1.amazonaws.com}}
    --output {{"text"}}
```
Resultado:  

```
import com.amazonaws.services.glue.ChoiceOption
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.ResolveSpec
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._

object GlueApp {
  def main(sysArgs: Array[String]) {
    val spark: SparkContext = new SparkContext()
    val glueContext: GlueContext = new GlueContext(spark)
    // @params: [JOB_NAME]
    val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
    Job.init(args("JOB_NAME"), glueContext, args.asJava)
    // @type: DataSource
    // @args: [database = "tempdb", table_name = "s3-source", transformation_ctx = "datasource0"]
    // @return: datasource0
    // @inputs: []
    val datasource0 = glueContext.getCatalogSource(database = "tempdb", tableName = "s3-source", redshiftTmpDir = "", transformationContext = "datasource0").getDynamicFrame()
    // @type: ApplyMapping
    // @args: [mapping = [("sensorid", "int", "sensorid", "int"), ("currenttemperature", "int", "currenttemperature", "int"), ("status", "string", "status", "string")], transformation_ctx = "applymapping1"]
    // @return: applymapping1
    // @inputs: [frame = datasource0]
    val applymapping1 = datasource0.applyMapping(mappings = Seq(("sensorid", "int", "sensorid", "int"), ("currenttemperature", "int", "currenttemperature", "int"), ("status", "string", "status", "string")), caseSensitive = false, transformationContext = "applymapping1")
    // @type: SelectFields
    // @args: [paths = ["sensorid", "currenttemperature", "status"], transformation_ctx = "selectfields2"]
    // @return: selectfields2
    // @inputs: [frame = applymapping1]
    val selectfields2 = applymapping1.selectFields(paths = Seq("sensorid", "currenttemperature", "status"), transformationContext = "selectfields2")
    // @type: ResolveChoice
    // @args: [choice = "MATCH_CATALOG", database = "tempdb", table_name = "my-s3-sink", transformation_ctx = "resolvechoice3"]
    // @return: resolvechoice3
    // @inputs: [frame = selectfields2]
    val resolvechoice3 = selectfields2.resolveChoice(choiceOption = Some(ChoiceOption("MATCH_CATALOG")), database = Some("tempdb"), tableName = Some("my-s3-sink"), transformationContext = "resolvechoice3")
    // @type: DataSink
    // @args: [database = "tempdb", table_name = "my-s3-sink", transformation_ctx = "datasink4"]
    // @return: datasink4
    // @inputs: [frame = resolvechoice3]
    val datasink4 = glueContext.getCatalogSink(database = "tempdb", tableName = "my-s3-sink", redshiftTmpDir = "", transformationContext = "datasink4").writeDynamicFrame(resolvechoice3)
    Job.commit()
  }
}
```
Para obter mais informações, consulte [Editar scripts em AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/edit-script.html) no *AWS Guia do Desenvolvedor do Glue*.  
+  Para ver detalhes da API, consulte [GetPlan](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-plan.html) na * Referência de comandos da AWS CLI*. 

### `get-tables`
<a name="glue_GetTables_cli_topic"></a>

O código de exemplo a seguir mostra como usar `get-tables`.

**AWS CLI**  
**Para listar as definições de algumas ou de todas as tabelas no banco de dados especificado**  
O exemplo de `get-tables` a seguir retorna informações sobre as tabelas no banco de dados especificado.  

```
aws glue get-tables --database-name '{{tempdb}}'
```
Resultado:  

```
{
    "TableList": [
        {
            "Name": "my-s3-sink",
            "DatabaseName": "tempdb",
            "CreateTime": 1602730539.0,
            "UpdateTime": 1602730539.0,
            "Retention": 0,
            "StorageDescriptor": {
                "Columns": [
                    {
                        "Name": "sensorid",
                        "Type": "int"
                    },
                    {
                        "Name": "currenttemperature",
                        "Type": "int"
                    },
                    {
                        "Name": "status",
                        "Type": "string"
                    }
                ],
                "Location": "s3://janetst-bucket-01/test-s3-output/",
                "Compressed": false,
                "NumberOfBuckets": 0,
                "SerdeInfo": {
                    "SerializationLibrary": "org.openx.data.jsonserde.JsonSerDe"
                },
                "SortColumns": [],
                "StoredAsSubDirectories": false
            },
            "Parameters": {
                "classification": "json"
            },
            "CreatedBy": "arn:aws:iam::007436865787:user/JRSTERN",
            "IsRegisteredWithLakeFormation": false,
            "CatalogId": "007436865787"
        },
        {
            "Name": "s3-source",
            "DatabaseName": "tempdb",
            "CreateTime": 1602730658.0,
            "UpdateTime": 1602730658.0,
            "Retention": 0,
            "StorageDescriptor": {
                "Columns": [
                    {
                        "Name": "sensorid",
                        "Type": "int"
                    },
                    {
                        "Name": "currenttemperature",
                        "Type": "int"
                    },
                    {
                        "Name": "status",
                        "Type": "string"
                    }
                ],
                "Location": "s3://janetst-bucket-01/",
                "Compressed": false,
                "NumberOfBuckets": 0,
                "SortColumns": [],
                "StoredAsSubDirectories": false
            },
            "Parameters": {
                "classification": "json"
            },
            "CreatedBy": "arn:aws:iam::007436865787:user/JRSTERN",
            "IsRegisteredWithLakeFormation": false,
            "CatalogId": "007436865787"
        },
        {
            "Name": "test-kinesis-input",
            "DatabaseName": "tempdb",
            "CreateTime": 1601507001.0,
            "UpdateTime": 1601507001.0,
            "Retention": 0,
            "StorageDescriptor": {
                "Columns": [
                    {
                        "Name": "sensorid",
                        "Type": "int"
                    },
                    {
                        "Name": "currenttemperature",
                        "Type": "int"
                    },
                    {
                        "Name": "status",
                        "Type": "string"
                    }
                ],
                "Location": "my-testing-stream",
                "Compressed": false,
                "NumberOfBuckets": 0,
                "SerdeInfo": {
                    "SerializationLibrary": "org.openx.data.jsonserde.JsonSerDe"
                },
                "SortColumns": [],
                "Parameters": {
                    "kinesisUrl": "https://kinesis.us-east-1.amazonaws.com",
                    "streamName": "my-testing-stream",
                    "typeOfData": "kinesis"
                },
                "StoredAsSubDirectories": false
            },
            "Parameters": {
                "classification": "json"
            },
            "CreatedBy": "arn:aws:iam::007436865787:user/JRSTERN",
            "IsRegisteredWithLakeFormation": false,
            "CatalogId": "007436865787"
        }
    ]
}
```
Para obter mais informações, consulte [Definição de tabelas no catálogo de dados do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [GetTables](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/get-tables.html) na *Referência de comandos da AWS CLI*. 

### `start-crawler`
<a name="glue_StartCrawler_cli_topic"></a>

O código de exemplo a seguir mostra como usar `start-crawler`.

**AWS CLI**  
**Para iniciar um crawler**  
O exemplo de `start-crawler` a seguir inicia um crawler.  

```
aws glue start-crawler --name {{my-crawler}}
```
Resultado:  

```
None
```
Para obter mais informações, consulte [Definição de crawlers](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [StartCrawler](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/start-crawler.html) na *Referência de comandos da AWS CLI*. 

### `start-job-run`
<a name="glue_StartJobRun_cli_topic"></a>

O código de exemplo a seguir mostra como usar `start-job-run`.

**AWS CLI**  
**Para iniciar a execução de um trabalho**  
O exemplo de `start-job-run` a seguir inicia um trabalho.  

```
aws glue start-job-run \
    --job-name {{my-job}}
```
Resultado:  

```
{
    "JobRunId": "jr_22208b1f44eb5376a60569d4b21dd20fcb8621e1a366b4e7b2494af764b82ded"
}
```
Para obter mais informações, consulte [Criação de trabalhos](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) no *Guia do desenvolvedor do AWS Glue*.  
+  Consulte detalhes da API em [StartJobRun](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/start-job-run.html) na *Referência de comandos da AWS CLI*. 