多個Apache Spark JAR任務並發運行時會失敗

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

寫的亞當Pavlacka

最後發布日期:2022年5月23日

問題

如果你同時運行多個Apache Spark JAR任務,可能會出現以下錯誤:

org.apache.spark.sql.AnalysisException:表或視圖未找到:xxxxxxx;1號線pos 48

導致

此錯誤是由於Scala中的bug造成的。當對象擴展時應用程序,它的瓦爾字段不再是不可變的,它們可以在主要方法被調用。如果多次運行JAR作業,a瓦爾包含DataFrame的字段可能會被無意更改。

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

解決方案

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

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

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

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