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

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

中的 ETL 输入和输出的格式选项Amazon连接词

各种AmazonGlue PySpark 和 Scala 方法和转换使用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 基元类型)与Amazon连接词DynamicFrame1.7 和 1.8 的数据类型。

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

对于写入者:此表显示Amazon连接词DynamicFrame数据类型和 Avro 数据类型 1.7 和 1.8。

Amazon连接词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— 指定要用于转义的字符。此选项仅在读取 CSV 文件时使用。默认值为 none。如果启用,则按原样使用紧跟其后的字符,一小组已知的转义符(\n\r\t\0)除外。

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

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

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

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

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

以下示例介绍如何在AmazonGlue ETL 作业脚本.

glueContext.write_dynamic_frame.from_options( frame = datasource1, connection_type = "s3", connection_options = { "path": "s3://s3path" }, format = "csv", format_options={ "quoteChar": -1, "separator": "|" }, transformation_ctx = "datasink2")

format="ion"

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

目前,AmazonGlue 不支持ion对于输出。

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

format="grokLog"

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

目前,AmazonGlue 不支持groklog对于输出。

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

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

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

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

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

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

format="json"

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

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

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

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

format="orc"

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

没有适用于 format="orc"format_options 值。不过,基础 SparkSQL 代码所接受的任何选项均可通过 connection_options 映射参数传递给它。

format="parquet"

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

没有适用于 format="parquet"format_options 值。不过,基础 SparkSQL 代码所接受的任何选项均可通过 connection_options 映射参数传递给它。

format="glueparquet"

此值指定Apache Parquet作为数据格式,但还会指定一个自定义 Parquet 编写器类型,该类型已作为数据格式针对动态帧进行优化。编写前不需要预先计算的架构。在数据传入时,glueparquet 会动态计算和修改架构。您可以设置format="glueparquet",或者设置format="parquet"配对format_optionuseGlueParquetWriter设置为true

您可以使用以下命令format_options值:

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

  • blockSize— 指定在内存中缓冲的行组的大小(以 MB 为单位)。默认值是 。134217728,或 128 MB。

  • pageSize— 指定必须完全读取以访问单个记录的最小单位的大小(以字节为单位)。默认值是 。1048576,或 1 MB。

限制:

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

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

  • glueparquet只能作为数据汇的格式传递。

format="xml"

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

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

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

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

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

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

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

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

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

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