不,我不相信這是可能的。然而,我有興趣了解一個用例是理想的行為。
執行模式是如何工作的呢?
三角洲湖使用模式驗證在寫,這意味著所有新寫入表檢查兼容性與目標表的模式寫時間。如果模式不兼容,三角洲湖完全取消交易(沒有數據寫入),並提出了一個異常,讓用戶了解不匹配。
決定寫一個表是否兼容,三角洲湖使用以下規則。DataFrame編寫:
- 不能包含任何額外的列不存在目標表的模式。相反的,沒關係,如果傳入的數據不包含表中的每一列,這些列將被分配null值。
- 不能有不同的列數據類型的列的數據類型在目標表中。如果一個目標表的列包含StringType數據,但相應的列DataFrame包含IntegerType數據,模式的實施將引發一個異常,防止寫操作。
- 不能隻包含列名不同的情況。這意味著您不能列如“Foo”和“Foo”定義在相同的表。當火花可用於區分大小寫或不敏感(默認)模式下,三角洲湖case-preserving但不敏感當存儲模式。拚花是大小寫敏感的,當存儲和返回列信息。為了避免潛在的錯誤,數據損壞或損失的問題(我們親自經曆過在磚),我們決定把這一限製。