在 Amazon Glue 中使用 JSON 格式
此值指定 JSON
您可以将以下 format_options 值与 format="json" 结合使用:
-
jsonPath– JsonPath表达式,标识要读取到记录中的对象。当文件包含嵌套在外部数组内的记录时,此表达式尤其有用。例如,以下 JsonPath 表达式面向 JSON 对象的 id字段。format="json", format_options={"jsonPath": "$.id"} multiLine– 指定单个记录能否跨越多行的布尔值。当字段包含带引号的换行符时,会出现此选项。如果有记录跨越多个行,您必须将此选项设置为"true"。默认值为"false",它允许在分析过程中更积极地拆分文件。-
optimizePerformance– 一个布尔值,用于指定是否将高级 SIMD JSON 读取器与基于 Apache Arrow 的列式内存格式结合使用。仅适用于 Amazon Glue 3.0。不兼容multiLine或jsonPath。提供这两个选项中的任何一个都将指示 Amazon Glue 回滚到标准读取器。 -
withSchema– 一个字符串值,以 手动指定 XML 架构 中描述的格式指定表 Schema。仅从非目录连接读取时与optimizePerformance结合使用。
将矢量化 SIMD JSON 读取器与 Apache Arrow 列式格式结合使用
Amazon Glue 版本 3.0 增加了适用于 JSON 数据的矢量化读取器。与标准读取器相比,它在某些条件下的执行速度可提高 2 倍。此读取器存在一些需要用户在使用前注意的限制,详见本节的说明。
要使用优化的读取器,请将在 format_options 或表属性中将 "optimizePerformance" 设置为 True。除非从目录中读取,否则您还需要提供 withSchema。withSchema 需要有一个 手动指定 XML 架构 中描述的输入
// Read from S3 data source glueContext.create_dynamic_frame.from_options( connection_type = "s3", connection_options = {"paths": ["s3://s3path"]}, format = "json", format_options={ "optimizePerformance": True, "withSchema":SchemaString}) # Read from catalog table glueContext.create_dynamic_frame.from_catalog( database = database, table_name = table, additional_options = { # The vectorized reader for JSON can read your schema from a catalog table property. "optimizePerformance": True, })
矢量化 JSON 读取器的限制
请注意以下限制:
不支持具有嵌套对象或数组值的 JSON 元素。Amazon Glue 将回滚到标准读取器(如有提供)。
必须从目录或使用
withSchema参数提供一个 Schema。不兼容
multiLine或jsonPath。提供这两个选项中的任何一个都将指示 Amazon Glue 回滚到标准读取器。如果提供的输入记录与输入 Schema 不一致,将会导致读取器失败。
将不会创建错误记录。
不支持具有多字节字符(如日语或中文字符)的 JSON 文件。