當創建一個增量表saveAsTable默認的nullability列真正的(列可以包含null值)。這是預期行為。
在某些情況下,您可能想要創建一套三角洲的nullability列的表假(列不能包含空值)。
指令
使用創建表命令來創建表和定義的列不能包含空值通過使用非空。
例如,這個示例代碼創建了一個三角洲表有兩個整數列。列命名零可以包含null值,但列命名呢null1不能包含空值,因為它創建了非空。
% sql CREATE TABLE <表名> (num Int, Int num1 NOT NULL)使用三角洲
現在我們已經三角洲表定義我們可以創建一個示例DataFrame和使用saveAsTable寫信給三角洲表。
此示例代碼生成示例數據和配置模式isNullable屬性設置為真正的為字段全國礦工工會和假字段num1。這個樣例數據存儲在一個新創建的DataFrame。
最後一步,saveAsTable用於將數據寫入我們先前創建的表。
進口org.apache.spark.sql.types。_ val數據= Seq(行(1、3)、行(5、7))= StructType val模式(列表(StructField (“num”, IntegerType,真的),StructField (“num1”, IntegerType假)))val df =火花。createDataFrame (spark.sparkContext.parallelize(數據),模式)df.write.mode .format(“覆蓋”)(“δ”).saveAsTable(“<表名稱>”)
如果你讀表模式,全國礦工工會允許空值num1不允許空值。
根|——num:整數(nullable = true) |——num1:整數(nullable = false)
舉個例子,如果你跳過表創建,就試著寫saveAsTable的數據表,然後閱讀模式,所有列被定義為可空。