取消
顯示的結果
而不是尋找
你的意思是:

“檢測模式變化”錯誤在從三角洲表讀取數據流在應用“改變NOT NULL列下降”多個列。

Anatoly
新的貢獻者三世

這就跟你問聲好!

我有一個差值表和一個過程,從這個表讀取流。

我需要刪除非空約束的這個表的列。

第一個命令不會影響閱讀流下降。

但第二個命令的結果在錯誤:

StreamingQueryException:檢測模式改變舊模式:根——一個:字符串(nullable = true)——b:字符串(nullable = true)——c:時間戳(nullable = false)新模式:根——一個:字符串(nullable = true)——b:字符串(nullable = false)——c:時間戳(nullable = false)

完整的python筆記本:

#磚筆記本源#魔法% sql #魔法創造模式temp_schema #命令- - - - - - - - - - - # %魔法temp_schema sql #魔法創建表。temp_stream_table(#魔法NOT NULL字符串,#魔法b非空字符串,c #魔法時間戳NOT NULL #魔法)#魔法位置“dbfs: / tmp / temp_stream_table”命令- - - - - - - - - - - # #魔法% sql插入temp_schema #魔法。temp_stream_table #魔法值(“a”、“b”,當前日期),(“c”,“d”,當前日期)#命令- - - - - - - - - - - def run_stream():返回(火花.readStream .option .table (“mergeSchema”、“true”) (“temp_schema.temp_stream_table”) .writeStream .trigger (availableNow = true) .option (“checkpointLocation”、“dbfs / tmp / temp_stream_checkpoint”) .foreachBatch(λdf, _id:沒有).start () .awaitTermination()) #命令- - - - - - - - - - - run_stream()命令- - - - - - - - - - - # #魔法% sql ALTER TABLE temp_schema #魔法。temp_stream_table #魔法改變列NOT NULL下降;#命令- - - - - - - - - - - run_stream() #成功!#命令- - - - - - - - - - - #魔法% sql ALTER TABLE temp_schema #魔法。temp_stream_table #魔法改變NOT NULL列b下降;#命令- - - - - - - - - - - run_stream() # # #失敗:StreamingQueryException:檢測模式改變……#命令- - - - - - - - - - - #魔法% sql #魔法DROP TABLE temp_schema.temp_stream_table;#魔法下降模式- - - - - - - - - - - dbutils.fs temp_schema #命令。rm (“dbfs: / tmp / temp_stream_checkpoint”,真的)dbutils.fs。rm (“dbfs: / tmp / temp_stream_table”,真的)

這是一個錯誤嗎?

9回複9

Kaniz
社區經理
社區經理

嗨@Anatoly Tikhonov,最有可能/ dbfs / tmp / temp_stream_checkpoint,目錄有一些以前的數據來看,這個數據可能有不同的模式比當前的一個,所以當加載新數據相同的目錄中你會得到這種類型的異常。

Anatoly
新的貢獻者三世

嗨@Kaniz開羅,

我清理檢查點目錄行71 - 12,它應該是空的。

還沒有新數據插入到表中,錯誤的是閱讀。

Kaniz
社區經理
社區經理

嗨@Anatoly Tikhonov,你看到的不同模式的兩個表的截圖你共享?圖像

Anatoly
新的貢獻者三世

是的,字段“b”。nullable = true vs nullable = false

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map