被覆盖时通过 Athena 查询 Glue Partitions?
Querying Glue Partitions through Athena while being overwritten?
我在 S3 上有一个 Glue table,其中分区是通过 Spark save mode overwrite
(通过 Glue 作业执行的脚本)填充的。
如果我们在这些分区被覆盖时查询它们,Athena 的预期行为是什么?
只要您在写入时设置 enableUpdateCatalog = True
,Athena 就会拾取新分区。如果您只是覆盖现有分区的内容,Athena 将能够查询数据,只要您没有模式不匹配。
如果您在查询 运行ning 时重写文件,您可能 运行 出现类似“HIVE_FILESYSTEM_ERROR:文件的文件大小不正确 1234567”的错误。
原因是在查询计划期间,所有文件都列在 S3 上,除其他外,文件大小用于在工作节点之间分配工作。如果一个文件是可拆分的,其中包括像 ORC 和 Parquet 这样的文件格式,以及未压缩的文本格式(例如 JSON、CSV),它的一部分(称为拆分)可能由不同的节点处理。
如果文件在查询计划和查询执行之间更改,则计划不再有效,查询执行失败。
我在 S3 上有一个 Glue table,其中分区是通过 Spark save mode overwrite
(通过 Glue 作业执行的脚本)填充的。
如果我们在这些分区被覆盖时查询它们,Athena 的预期行为是什么?
只要您在写入时设置 enableUpdateCatalog = True
,Athena 就会拾取新分区。如果您只是覆盖现有分区的内容,Athena 将能够查询数据,只要您没有模式不匹配。
如果您在查询 运行ning 时重写文件,您可能 运行 出现类似“HIVE_FILESYSTEM_ERROR:文件的文件大小不正确 1234567”的错误。
原因是在查询计划期间,所有文件都列在 S3 上,除其他外,文件大小用于在工作节点之间分配工作。如果一个文件是可拆分的,其中包括像 ORC 和 Parquet 这样的文件格式,以及未压缩的文本格式(例如 JSON、CSV),它的一部分(称为拆分)可能由不同的节点处理。
如果文件在查询计划和查询执行之间更改,则计划不再有效,查询执行失败。