多個Apache Spark JAR作業在並發運行時失敗

Apache Spark JAR作業在並發運行時失敗,出現AnalysisException錯誤。

寫的亞當Pavlacka

最後發布時間:2022年5月23日

問題

如果您同時運行多個Apache Spark JAR作業,有些運行可能會失敗,並出現以下錯誤:

沒有找到表或視圖:xxxxxxx;線路1 pos 48

導致

此錯誤是由Scala中的一個錯誤引起的。當對象擴展時應用程序,它的瓦爾字段不再是不可變的,可以在主要方法被調用。如果多次運行JAR作業,則a瓦爾包含DataFrame的字段可以在不經意間更改。

因此,當任何一個並發運行結束時,它會清除其他運行的臨時視圖。Scala issue 11576提供了更多細節。

解決方案

要解決此錯誤,請調用main ()顯式方法。舉個例子,如果你有類似這樣的代碼:

%scala對象MainTest擴展應用程序{…}

您可以用不擴展的代碼替換它應用程序

%scala對象MainTest {def main(args: Array[String]) {......}}