在 Amazon Glue 中使用 JSON 格式 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在 Amazon Glue 中使用 JSON 格式

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

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

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

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

  • optimizePerformance – 一个布尔值,用于指定是否将高级 SIMD JSON 读取器与基于 Apache Arrow 的列式内存格式结合使用。仅适用于 Amazon Glue 3.0。不兼容 multiLinejsonPath。提供这两个选项中的任何一个都将指示 Amazon Glue 回滚到标准读取器。

  • withSchema – 一个字符串值,以 手动指定 XML 架构 中描述的格式指定表 Schema。仅从非目录连接读取时与 optimizePerformance 结合使用。

将矢量化 SIMD JSON 读取器与 Apache Arrow 列式格式结合使用

Amazon Glue 版本 3.0 增加了适用于 JSON 数据的矢量化读取器。与标准读取器相比,它在某些条件下的执行速度可提高 2 倍。此读取器存在一些需要用户在使用前注意的限制,详见本节的说明。

要使用优化的读取器,请将在 format_options 或表属性中将 "optimizePerformance" 设置为 True。除非从目录中读取,否则您还需要提供 withSchemawithSchema 需要有一个 手动指定 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。

  • 不兼容 multiLinejsonPath。提供这两个选项中的任何一个都将指示 Amazon Glue 回滚到标准读取器。

  • 如果提供的输入记录与输入 Schema 不一致,将会导致读取器失败。

  • 将不会创建错误记录

  • 不支持具有多字节字符(如日语或中文字符)的 JSON 文件。