我們得到了這樣的錯誤,
遞歸的觀點“x”檢測(周期:“x”- >“x”)
. .在我們長期工作代碼,在火花2.4.5很好(6.4運行時),當我們火花3.2集群上運行它(10.0運行時)。
它發生時,
< x是一個Dataframe >
x.createOrReplaceTempView (“x”)
…為了使用火花SQL等,
y = spark.sql (“””
選擇……
從x
…
”“”)
- - - - - - -
似乎(“x”)的名稱
x.createOrReplaceTempView (“x”)
…需要全局唯一,不能覆蓋函數(即使“createOrReplaceTempView”有“替換”這個詞)。
有解決這個問題的一般沒有設定全球“火花。<一>。遺產”的選擇嗎?(我們希望避免)
如果沒有解決,我們現在麻煩重寫重寫每個
x.createOrReplaceTempView (“x”)
來
z = f 'x_ {timestamp_as_text_with_underscores}’
x.createOrReplaceTempView (z)
…離岸金融中心用它,
y = spark.sql (“””
選擇……
從z
…
”“”)
…這樣的人,但我們更喜歡更優雅的解決方案,如果有一個嗎?
奇怪的它應該工作。隻有其他想法,我是檢查createOrReplaceGlobalTempView使用全局數據庫。createOrReplaceTempView是使用“缺省”數據庫在遷移過程中可能有一些問題嗎?您可以創建新的火花數據庫。
下麵的函數也可以有用的診斷問題:
spark.catalog.currentDatabase spark.catalog.listDatabases () () spark.catalog.listTables(“違約”)
這是一個重大改變在火花3.1中引入的
從遷移指南:SQL數據集和DataFrame——火花3.1.1文檔(apache.org)
在火花3.1中,永久的臨時視圖會有相同的行為觀點,即捕獲和儲存SQL配置運行時,SQL文本、目錄和命名空間。capatured視圖屬性將被應用在視圖的解析和分析階段解決。恢複之前的行為引發3.1,你可以設置spark.sql.legacy。storeAnalyzedPlanForView為真。
我試過設置spark.sql.legacy。storeAnalyzedPlanForView為真並且能夠恢複舊的行為。