你好,
我有一個場景,writeStream查詢寫流數據從青銅青銅位置和我必須讀,做一些處理,最後寫銀。我使用S3三角洲表的位置
但第一執行,readStream給一個例外:表模式沒有設置,數據寫入或使用創建表設置模式。
我readStream查詢:
(火花
.readStream.format(“δ”)
.option (“ignoreChanges”,“真正的”)
.option (“initialPosition”、“最新”)
.load (“/ mnt / tmp /青銅”)
)
有選項,可以設置與readStream查詢來檢查是否有數據在三角洲位置,如果不是這樣,它會等待,直到數據可用嗎?
@Pranathi Girish:
你看到的錯誤消息表明,三角洲的模式表你想讀尚未設置。這可能發生,如果你還沒有寫任何數據表,或者如果沒有顯式地設置使用的模式
CREATE TABLE命令。
來解決這個問題,您可以顯式地設置的模式三角洲表使用CREATE table命令之前運行readStream查詢。例如:
(火花。sql(“創建表delta_table_name (col1字符串,col2 INT)使用三角洲位置/ mnt / tmp /銀”).readStream .format .option(“δ”)(“ignoreChanges”,“真正的”).option .load (“initialPosition”、“最新”)(“/ mnt / tmp /青銅”))
關於的問題等待三角洲表中的數據是可用的,你可以試試設置
failOnDataLoss readStream查詢選項錯誤。這告訴火花等待新數據到達流而不是拋出錯誤如果數據丟失。例如:
(火花.readStream .format(“δ”).option .option (“ignoreChanges”、“true”) (“initialPosition”、“最新”).option .load (“failOnDataLoss”,“假”)(“/ mnt / tmp /青銅”))
這個選項設置,火花將等待新數據到達的流並繼續處理一旦可用。然而,請注意,這可能導致較慢的性能是否有到達的數據流之間的縫隙。
希望這能幫助你找到解決你的答案!