AWS Glue 中的 ETL 输入和输出的格式选项 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AWS Glue 中的 ETL 输入和输出的格式选项

各种 AWS Glue 和 Scala 方法和转换使用 PySpark 参数和 format 参数指定其输入和/或输出格式。format_options这些参数可以采用以下值。

注意

目前,流式处理 ETL 作业支持的唯一格式为 JSON、CSV、Parquet、ORC、Avro 和 Grok。

format="avro"

此值指定 Apache Avro 数据格式。

您可以将以下 format_options 值与 format="avro" 结合使用:

  • version — 指定要支持的 Apache Avro 读取器/写入器格式的版本。默认值为“1.7”。您可以指定 format_options={"version": “1.8”} 以启用 Avro 逻辑类型读取和写入。有关更多信息,请参阅 Apache Avro 1.7.7 规范Apache Avro 1.8.2 规范

    Apache Avro 1.8 连接器支持以下逻辑类型转换:

对于读取器:此表显示了 Avro 数据类型(逻辑类型和 Avro 基元类型)与 Avro 读取器 1.7 和 1.8 的 AWS Glue DynamicFrame 数据类型之间的转换。

Avro 数据类型:

逻辑类型

Avro 数据类型:

Avro 基元类型

GlueDynamicFrame 数据类型:

Avro 读取器 1.7

GlueDynamicFrame 数据类型:

Avro 读取器 1.8

小数 bytes BINARY 小数
小数 固定 BINARY 小数
日期 int INT 日期
时间(毫秒) int INT INT
时间(微秒) long LONG LONG
时间戳(毫秒) long LONG 时间戳
时间戳(微秒) long LONG LONG
持续时间(不是逻辑类型) 固定为 12 BINARY BINARY

对于写入器:此表显示 Avro 写入器 1.7 和 1.8 在 AWS Glue DynamicFrame 数据类型与 Avro 数据类型之间的转换。

AWS Glue DynamicFrame 数据类型 Avro 数据类型:

Avro 写入器 1.7

Avro 数据类型:

Avro 写入器 1.8

小数 字符串 decimal
日期 字符串 date
时间戳 字符串 timestamp-micros

format="csv"

此值指定 comma-separated-values 作为数据格式 (例如,请参阅 RFC 4180RFC 7111)。

您可以将以下 format_options 值与 format="csv" 结合使用:

  • separator — 指定分隔符。默认值为逗号:',',但可以指定任何其他字符。

  • escaper — 指定要用于转义的字符。默认值为 "none"。 如果启用此选项,则按原样使用紧跟其后的字符,但一小部分已知的转义(\n\r\t\0)除外。

  • quoteChar — 指定要用于引用的字符。默认值为双引号:'"'。 将此项设置为 '-1' 可完全禁用引用。

  • multiline — 指定单个记录能否跨越多行的布尔值。当字段包含带引号的换行符时,会出现此选项。如果有记录跨越多个行,您必须将此选项设置为 True。默认值为 False,它允许在分析过程中更积极地拆分文件。

  • withHeader — 指定是否将第一行视为标题的布尔值。默认值为 False。 此选项可在 DynamicFrameReader 类中使用。

  • writeHeader — 指定是否将标题写入输出的布尔值。默认值为 True。 此选项可在 DynamicFrameWriter 类中使用。

  • skipFirst — 指定是否跳过第一个数据行的布尔值。默认值为 False

format="ion"

此值指定 Amazon Ion 作为数据格式。(有关更多信息,请参阅 Amazon Ion 规范。)

目前,AWS Glue 不支持输出 ion

没有适用于 format="ion"format_options 值。

format="grokLog"

此值指定由一个或多个 Logstash Grok 模式指定的日志数据格式 (例如,请参阅 Logstash 参考 (6.2]:Grok 筛选器插件)。

目前,AWS Glue 不支持输出 groklog

您可以将以下 format_options 值与 format="grokLog" 结合使用:

  • logFormat — 指定与日志的格式匹配的 Grok 模式。

  • customPatterns — 指定在此处使用的其他 Grok 模式。

  • MISSING — 指定用于标识缺失值的信号。默认为 '-'

  • LineCount — 指定每个日志记录中的行数。默认值为 '1',并且目前仅支持单行记录。

  • StrictMode — 指定是否启用严格模式的布尔值。在严格模式下,读取器不会执行自动类型转换或恢复。默认值为 "false"

format="json"

此值指定 JSON (JavaScript 对象表示法) 数据格式。

您可以将以下 format_options 值与 format="json" 结合使用:

  • jsonPath — 标识要读取到记录中的对象的 JsonPath 表达式。当文件包含嵌套在外部数组内的记录时,此表达式尤其有用。例如,以下 JsonPath 表达式以 JSON 对象的 id 字段为目标。

    format="json", format_options={"jsonPath": "$.id"}
  • multiline — 指定单个记录能否跨越多行的布尔值。当字段包含带引号的换行符时,会出现此选项。如果有记录跨越多个行,您必须将此选项设置为 "true"。默认值为 "false",它允许在分析过程中更积极地拆分文件。

format="orc"

此值指定 Apache ORC 作为数据格式。(有关更多信息,请参阅 ORCLanguageManual。)

没有 format_options 值的 format="orc"。 但是,底层 SparkSQL 代码所接受的任何选项均可通过 connection_options 映射参数传递给它。

format="parquet"

此值指定 Apache Parquet 作为数据格式。

没有 format_options 值的 format="parquet"。 但是,底层 SparkSQL 代码所接受的任何选项均可通过 connection_options 映射参数传递给它。

format="glueparquet"

此值指定一个自定义 Parquet 编写器类型,该类型已作为数据格式针对动态帧进行优化。编写前不需要预先计算的架构。在数据传入时,glueparquet 会动态计算和修改架构。

您可以将以下 format_options 值与 format="glueparquet" 结合使用:

  • compression — 指定在编写 Parquet 文件时使用的压缩编解码器。用于 glueparquet 格式的压缩编解码器与 org.apache.parquet.hadoop.metadata.CompressionCodecName * 完全兼容,其中包括对 "uncompressed""snappy""gzip""lzo" 的支持。 默认值为 "snappy"

  • blockSize — 指定在内存中缓冲的行组的大小。默认值为 "128MB"

  • pageSize — 指定必须完全读取以访问单个记录的最小单位的大小。默认值为 "1MB"

限制:

  • glueparquet 仅支持架构收缩或扩展,但不支持类型更改。

  • glueparquet 无法存储仅架构文件。

  • glueparquet 只能作为数据接收器的格式传递。

format="xml"

此值指定 XML 作为数据格式,通过 Apache Spark 的 XML 数据源分析器分支对其进行分析。

目前,AWS Glue 不支持输出“xml”。

您可以将以下 format_options 值与 format="xml" 结合使用:

  • rowTag — 指定文件中要视为行的 XML 标签。行标签不能自结束。

  • encoding — 指定字符编码。默认值为 "UTF-8"

  • excludeAttribute — 指定是否要排除元素中的属性的布尔值。默认值为 "false"

  • treatEmptyValuesAsNulls — 指定是否将空格视为空值的布尔值。默认值为 "false"

  • attributePrefix — 用于将属性与元素区分开来的属性的前缀。此前缀用于字段名称。默认值为 "_"

  • valueTag — 在元素中具有没有子项的属性时用于值的标签。默认为 "_VALUE"

  • ignoreSurroundingSpaces — 指定是否应忽略值周围的空格的布尔值。默认值为 "false"