這就跟你問聲好!
我有一個差值表和一個過程,從這個表讀取流。
我需要刪除非空約束的這個表的列。
第一個命令不會影響閱讀流下降。
但第二個命令的結果在錯誤:
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”,真的)
這是一個錯誤嗎?