

# 使用 Scala 编写 AWS Glue ETL 脚本
<a name="glue-etl-scala-using"></a>

您可以使用 AWS Glue 控制台自动生成 Scala 提取、转换和加载 (ETL) 程序，并根据需要对其进行修改，然后将其分配给作业。或者，您可以从头编写自己的程序。有关更多信息，请参阅[在 AWS Glue 中为 Spark 作业配置作业属性](add-job.md)。然后，AWS Glue 会在服务器上编译您的 Scala 程序，再运行关联的作业。

为了确保您的程序编译时不会出现错误并可按预期运行，请务必在 REPL（读取-求值-输出-循环）或 Jupyter Notebook 的开发端点中加载程序并在此处进行测试，然后再在作业中运行。由于编译过程在服务器上进行，因此您无法清楚地看到服务器上出现的任何问题。

## 在 Jupyter Notebook 中的开发端点上测试 Scala ETL 程序
<a name="aws-glue-programming-scala-using-notebook"></a>

要在 AWS Glue 开发终端节点上测试 Scala 程序，请设置开发终端节点（如 [添加开发终端节点](add-dev-endpoint.md) 中所述）。

接下来，将其连接到在您的计算机上本地运行或在 Amazon EC2 笔记本服务器上远程运行的 Jupyter Notebook。要安装 Jupyter Notebook 的本地版本，请按照 [教程：JupyterLab 中的 Jupyter notebook](dev-endpoint-tutorial-local-jupyter.md) 中的说明操作。

在您的笔记本上运行 Scala 代码与运行 PySpark 代码之间的唯一差别在于，在笔记本上每个段落的开头必须为：

```
%spark
```

这将防止 Notebook 服务器默认使用 Spark 解释器的 PySpark 风格。

## 在 Scala REPL 中测试 Scala ETL 程序
<a name="aws-glue-programming-scala-using-repl"></a>

您可以使用 AWS Glue Scala REPL 在开发终端节点上测试 Scala 程序。按照[教程：使用 SageMaker AI 笔记本教程：使用 REPL shell](dev-endpoint-tutorial-repl.md)中的说明操作，除了 SSH-to-REPL 命令末尾，将 `-t gluepyspark` 替换为 `-t glue-spark-shell`。这将调用 AWS Glue Scala REPL。

要在完成时关闭 REPL，请键入 `sys.exit`。