将 Amazon S3 中的文件用作数据源 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Amazon S3 中的文件用作数据源

如果您选择 Amazon S3 作为数据源,则可以选择以下任一项:

  • 数据目录数据库和表。

  • Amazon S3 中的存储桶、文件夹或文件。

如果您将 Amazon S3 存储桶用作数据源,Amazon Glue 会从文件中的指定位置检测数据的架构,或者使用您指定的文件作为样本文件。当您使用 Infer schema (推断架构) 按钮时,会检测架构。如果您更改 Amazon S3 位置或样本文件,则必须选择 Infer schema (推断架构),使用新信息执行架构检测。

配置直接从 Amazon S3 中的文件读取数据的数据源节点
  1. 转到新任务或已保存任务的可视编辑器。

  2. 在任务图中为 Amazon S3 源选择数据源节点。

  3. 选择 Data source properties (数据源属性) 选项卡,然后输入以下信息:

    • S3 source type (S3 源类型):(仅适用于 Amazon S3 数据源)选择选项 S3 location (S3 位置)

    • S3 URL:输入 Amazon S3 存储桶、文件夹或包含任务数据的文件的路径。您可以选择 Browse S3 (浏览 S3),从您的账户的可用位置中选择路径。

    • Recursive (递归):如果需要 Amazon Glue 从 S3 位置在子文件夹中的文件读取数据,请选择该选项。

      如果子文件夹包含分区数据,Amazon Glue 不会将文件夹名称中指定的分区信息添加到数据目录。例如,您可考虑 Amazon S3 中的以下文件夹。

      S3://sales/year=2019/month=Jan/day=1 S3://sales/year=2019/month=Jan/day=2

      如果选择 Recursive (递归),将 sales 文件夹选为 S3 位置,择 Amazon Glue 会读取所有子文件夹中的数据,但不会为年份、月份或日创建分区。

    • Data format (数据格式):选择数据的存储格式。您可以选择 JSON、CSV 或 Parquet。您选择的值会告知 Amazon Glue 任务如何从源文件读取数据。

      注意

      如果您未选择正确的数据格式,Amazon Glue 可能会正确推断模式,但任务将无法正确解析源文件中的数据。

      您可以输入其他配置选项,具体取决于您选择的格式。

      • JSON(JavaScript 对象表示法)

        • JsonPath:输入指向用于定义表架构的对象的 JSON 路径。JSON 路径表达式始终引用 JSON 结构,类似于 XPath 表达式与 XML 文档的结合使用方式。JSON 路径中的“根成员对象”始终称为 $,即使它是一个对象或数组。JSON 路径可以用点表示法或括号表示法编写。

          有关 JSON 路径的更多信息,请参阅 GitHub 网站上的 JsonPath

        • Records in source files can span multiple lines (源文件中的记录可以跨越多行):如果单个记录可以跨越 CSV 文件中的多行,请选择此选项。

      • CSV(逗号分隔值)

        • Delimiter (分隔符):输入字符以表示行中每个列条目的分隔项,例如 ; 或者 ,

        • Escape character (转义字符):输入用作转义字符的字符。此字符表示紧接转义字符的字符应该按字面意思处理,不应将其解释为分隔符。

        • Quote character (引号字符):输入用于将单独的字符串分组为单个值的字符。例如,如果您的 CSV 文件包含 "This is a single value" 之类的值,您将选择 Double quote (") (双引号("))

        • Records in source files can span multiple lines (源文件中的记录可以跨越多行):如果单个记录可以跨越 CSV 文件中的多行,请选择此选项。

        • First line of source file contains column headers (源文件的第一行包含列标题):如果 CSV 文件中的第一行包含列标题而不是数据,请选择此选项。

      • Parquet(Apache Parquet 列式存储)

        对于以 Parquet 格式存储的数据,不需要配置其他设置。

    • Partition predicate (分区谓词):要对从数据源读取的数据进行分区,请输入基于 Spark SQL 的布尔表达式,仅包含分区列。例如:"(year=='2020' and month=='04')"

    • Advanced options (高级选项):如果需要 Amazon Glue 根据特定文件检测数据的架构,请展开此部分。

      • Schema inference (架构推理):如果您希望特定的文件,而不是让 Amazon Glue 选择文件,则选择选项从 S3 中选择样本文件

      • Auto-sampled file (自动取样文件):输入 Amazon S3 中用于推断架构的文件的路径。

      如果要编辑数据源节点并更改选定的样本文件,请选择 Reload schema (重新加载架构),使用新的样本文件检测架构。

  4. 选择 Infer schema (推断架构) 按钮,从 Amazon S3 的源文件中检测架构。如果您更改 Amazon S3 位置或样本文件,则必须再次选择 Infer schema (推断架构),使用新信息推断架构。