如何告诉 AWS glue 我的 json 是 utf-8?
How to tell AWS glue my json is utf-8?
我正在尝试让 AWS Glue 爬虫为 json 文件创建 table。我的 JSon 文件是带有 BOM 的 utf-8。似乎 AWS Glue 无法将该文件识别为 json(或者实际上根本无法识别任何东西),因此它创建了一个空的 table 定义。纯文本文件确实有效(但当然它们不能正确包含国际字符)。
有什么方法可以告诉 Glue 文件是 utf-8 编码的吗?我已经尝试将 S3 元数据 "Content-Type" 设置为 "application/json; charset=utf-8",但这没有帮助。
原来 AWS Glue json 文件不能有 BOM。正如 triplee 在评论中所说,默认情况下它们是 utf-8。 RFC 8259 确实说:
8.1. Character Encoding
JSON text exchanged between systems that are not part of a closed ecosystem MUST be encoded using UTF-8
并添加:
Implementations MUST NOT add a byte order mark (U+FEFF) to the
beginning of a networked-transmitted JSON text. In the interests of
interoperability, implementations that parse JSON texts MAY ignore
the presence of a byte order mark rather than treating it as an
error.
如果 AWS Glue 能做最后一点就好了,但他们不需要这样做。
我正在尝试让 AWS Glue 爬虫为 json 文件创建 table。我的 JSon 文件是带有 BOM 的 utf-8。似乎 AWS Glue 无法将该文件识别为 json(或者实际上根本无法识别任何东西),因此它创建了一个空的 table 定义。纯文本文件确实有效(但当然它们不能正确包含国际字符)。 有什么方法可以告诉 Glue 文件是 utf-8 编码的吗?我已经尝试将 S3 元数据 "Content-Type" 设置为 "application/json; charset=utf-8",但这没有帮助。
原来 AWS Glue json 文件不能有 BOM。正如 triplee 在评论中所说,默认情况下它们是 utf-8。 RFC 8259 确实说:
8.1. Character Encoding
JSON text exchanged between systems that are not part of a closed ecosystem MUST be encoded using UTF-8
并添加:
Implementations MUST NOT add a byte order mark (U+FEFF) to the beginning of a networked-transmitted JSON text. In the interests of interoperability, implementations that parse JSON texts MAY ignore the presence of a byte order mark rather than treating it as an error.
如果 AWS Glue 能做最后一点就好了,但他们不需要这样做。