我对特定的胶水表(我以前从未见过的东西)有一个不寻常的行为,在这种情况下,它是由火花作业创建的表(带有气流的时间表)。
基本上,该作业包括从数据仓库中提取单个表并写入 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
几乎是如果表从湖层中移除。现在,问题是:你们有没有遇到过这样的问题,是它的调试过程吗?谢谢!