本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 4180
您可以将以下 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
目前,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
您可以将以下 format_options
值与 format="json"
结合使用:
-
jsonPath
— 标识要读取到记录中的对象的 JsonPath表达式。当文件包含嵌套在外部数组内的记录时,此表达式尤其有用。例如,以下 JsonPath 表达式以 JSON 对象的 id
字段为目标。format="json", format_options={"jsonPath": "$.id"}
-
multiline
— 指定单个记录能否跨越多行的布尔值。当字段包含带引号的换行符时,会出现此选项。如果有记录跨越多个行,您必须将此选项设置为"true"
。默认值为"false"
,它允许在分析过程中更积极地拆分文件。
format="orc"
此值指定 Apache ORC
没有 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"
。