使用 SQL 查询转换数据 - AWS Glue

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 SQL 查询转换数据

您可以使用 SQL 转换以 SQL 查询形式编写您自己的转换。

SQL 转换节点可以有多个数据集作为输入,但只能生成单个数据集作为输出。包含文本字段,您可以在其中输入 Apache SparkSQL 查询。您可以为用作输入的每个数据集分配别名,以帮助简单地执行 SQL 查询。有关 SQL 语法的更多信息,请参阅 Spark SQL 文档

注意

如果您对 VPC 中的数据源使用 Spark SQL 转换,请将 AWS Glue VPC 终端节点添加到包含数据源的 VPC。有关配置开发终端节点的更多信息,请参阅《AWS Glue 开发人员指南》中的添加开发终端节点针对开发终端节点设置您的环境访问您的开发终端节点

在任务图中使用 SQL 转换节点
  1. (可选)在需要时将转换节点添加到任务图。选择 Spark SQL 作为节点类型。

  2. Node properties (节点属性) 选项卡上,输入任务图中节点的名称。如果尚未选择父节点,或者您希望为 SQL 转换选择多个输入,请从 Node parents (父节点) 列表中选择一个节点,用作转换的输入源。根据需要添加额外的父节点。

  3. 选择节点详细信息窗格中的 Transform (转换) 选项卡。

  4. SQL 查询的源数据集由您在每个节点的 Name (名称) 字段中指定的名称标识。如果您不想使用这些名称,或者这些名称不适合 SQL 查询,则可以将名称与每个数据集关联。控制台提供默认别名,例如 MyDataSource

    屏幕截图显示了一个 3 节点任务图。第一个节点是名为“This is a really long name”的 S3 源节点。第二个节点是名为“SQL query”的 SQL 代码转换节点。第三个节点是名为“Revised flight data”的 S3 数据目标节点。SQL 查询节点处于选中状态,并在节点详细信息面板中显示 Transform (转换) 选项卡。在 Transform (转换) 选项卡面板中,Input sources (输入源) 字段显示一个条目,即“This is a really long name”。关联的 Spark SQL 别名字段显示“myDataSource”。Code block (代码数据块) 字段显示“select * from myDataSource”。

    例如,如果 SQL 转换节点的父节点名为 Rename Org PK field,您可以将名称 org_table 与此数据集一起使用。然后,您可以在 SQL 查询中使用此别名来代替节点名称。

  5. 在标题 Code block (代码数据块) 下的文本输入字段中,粘贴或输入 SQL 查询。文本字段显示 SQL 语法突出显示和关键字建议。

  6. 在选中 SQL 转换节点的情况下,选择 Output schema (输出架构) 选项卡,然后选择 Edit (编辑)。提供描述 SQL 查询输出字段的列和数据类型。

    使用页面的 Output schema (输出架构) 部分中的以下操作指定架构:

    • 要重命名列,请将光标放在列的 Key (键) 文本框(也称为 field (字段) 或者 property key (属性键)),然后输入新名称。

    • 要更改列的数据类型,请从下拉列表中选择该列的新数据类型。

    • 要为架构添加新的顶级列,请选择 Overflow (溢出)( A rectangle with an ellipsis (...) in the center )按钮,然后选择 Add root key (添加根键)。新列将添加到架构顶部。

    • 要从架构中删除列,请选择键名称最右侧的删除图标( An outline of a trash can )。

  7. 指定输出架构后,选择 Apply (应用) 保存您的更改并退出架构编辑器。如果不想保存更改,请选择 Cancel (取消) 以编辑架构编辑器。

  8. (可选)配置节点属性和转换属性后,您可以选择节点详细信息窗格中的 Data preview (数据预览) 选项卡来预览已修改的数据集。当您首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关费用,并且一旦您提供 IAM 角色,则会立即开始计费。