为什么 DeltaTable.forPath 会抛出"[path] is not a Delta table"?



我正在尝试读取之前使用Spark加载的delta lake表,并且我正在使用IntelliJ IDE。

val dt = DeltaTable.forPath(spark, "/some/path/")

现在,当我试图再次阅读表格时,我发现错误在下面,它工作得很好,但突然出现了这样的错误,这可能是什么原因?

注:

检查了DeltaLake路径中的文件-看起来不错。同事们能够阅读同样的DeltaLake文件。

Exception in thread "main" org.apache.spark.sql.AnalysisException: `/some/path/` is not a Delta table.
    at org.apache.spark.sql.delta.DeltaErrors$.notADeltaTableException(DeltaErrors.scala:260)
    at io.delta.tables.DeltaTable$.forPath(DeltaTable.scala:593)
    at com.datalake.az.core.DeltaLake$.delayedEndpoint$com$walmart$sustainability$datalake$az$core$DeltaLake$1(DeltaLake.scala:66)
    at com.datalake.az.core.DeltaLake$delayedInit$body.apply(DeltaLake.scala:18)
    at scala.Function0.apply$mcV$sp(Function0.scala:39)
    at scala.Function0.apply$mcV$sp$(Function0.scala:39)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
    at scala.App.$anonfun$main$1$adapted(App.scala:80)
    at scala.collection.immutable.List.foreach(List.scala:431)
    at scala.App.main(App.scala:80)
    at scala.App.main$(App.scala:78)
    at com.datalake.az.core.DeltaLake$.main(DeltaLake.scala:18)
    at com.datalake.az.core.DeltaLake.main(DeltaLake.scala)

AnalysisException:/some/path/不是Delta表。

AnalysisException在给定路径的_delta_log目录下没有事务日志时抛出。

可能还有其他问题,但这是第一次检查。


BTW根据堆叠竞赛,我认为您可能没有使用最新、最棒的德尔塔湖2.0.0。请尽快升级,因为它带来了你不想错过的大量改进。

最新更新