首页 > 解决方案 > AWS Glue 表丢失 - Pyspark 错误 Py4JJavaError(保存表时出错)

问题描述

我对特定的胶水表(我以前从未见过的东西)有一个不寻常的行为,在这种情况下,它是由火花作业创建的表(带有气流的时间表)。

基本上,该作业包括从数据仓库中提取单个表并写入 s3/glue 中的表,覆盖现有分区(保存模式为覆盖)。由于某种原因,这项工作今天失败了,这是引发的异常。

py4j.protocol.Py4JJavaError: An error occurred while calling o108.saveAsTable.
java.lang.AssertionError: assertion failed: Expect the table customer_cdr has been dropped when the save mode is Overwrite
at scala.Predef$.assert(Predef.scala:170)
at org.apache.spark.sql.execution.command.CreateDataSourceTableAsSelectCommand.run(createDataSourceTables.scala:155)
at org.apache.spark.sql.execution.command.DataWritingCommandExec.sideEffectResult$lzycompute(commands.scala:104)
at org.apache.spark.sql.execution.command.DataWritingCommandExec.sideEffectResult(commands.scala:102)

起初,我和我的同事认为这只是 Spark 的 EMR 集群错误,然后重置集群即可解决。但后来我们看到了更奇怪的东西。

事件发生后,该表已从目录中消失(在胶水控制台中不可见,在 athena 中不可见)。但这里有问题!桌子还在那里,但被隐藏了。我们无法从搜索工具中的粘合 IDE 中看到它,但我们可以通过替换 url 中的表名从控制台访问,从 Athena 查询数据,甚至可以使用 get-table 命令从 cli 中列出表。

我们尝试删除表(控制台或 cli),但遇到以下问题:

An error occurred (EntityNotFoundException) when calling the DeleteTable operation: Table (v_ntfm_merchantlogstatus) not found

几乎是如果表从湖层中移除。现在,问题是:你们有没有遇到过这样的问题,是它的调试过程吗?谢谢!

标签: amazon-web-servicespysparkaws-glueamazon-athenaaws-lake-formation

解决方案


如果每个人都发现了一个奇怪的问题,AWS 报告说胶水有一个不寻常的行为导致表格“消失”(因为表格仍然存在而消失,对于我们的角色用户组来说,它是不可见的,仅对给定帐户的管理员或 root 用户可见)。

那么,在这种情况下应该怎么做呢?在这种特殊情况下,需要联系 AWS 来解决事件(唯一可能的途径)。

干杯,


推荐阅读