三角洲湖模式验证

三角洲湖自动验证的模式DataFrame写入表的兼容模式。三角洲湖使用以下规则来确定是否写从DataFrame表兼容:

  • 所有DataFrame列必须存在于目标表。如果有列DataFrame表中不存在,会抛出一个异常。列在表而不是DataFrame设置为null。

  • DataFrame列的数据类型必须匹配目标表的列数据类型。如果它们不匹配,会抛出一个异常。

  • DataFrame列名不能只有情况不同。这意味着您不能列如“Foo”和“Foo”定义在相同的表。虽然您可以使用火花,以防敏感或不敏感(默认)模式,拼花是大小写敏感的,当存储和返回列信息。三角洲湖case-preserving但不敏感当存储模式,这一限制,以避免潜在的错误,数据损坏或损失的问题。

三角洲湖支持DDL显式地添加新列和自动更新模式的能力。

如果您指定其他选项,例如partitionBy,结合附加模式,三角洲湖验证他们为任何不匹配匹配和抛出一个错误。当partitionBy不存在,添加自动跟随现有数据的分区。

请注意

插入语法提供了模式的实施和支持模式演化。如果一个列的数据类型不能安全地把你三角洲湖表的数据类型,则会抛出运行时异常。如果模式演化启用新列可以作为最后一列你的存在模式(或嵌套列)模式演变。

三角洲湖合并模式验证

合并自动验证的模式由插入和更新表达式生成的数据表的兼容模式。它使用以下规则来确定合并操作兼容:

  • 更新插入操作,指定的目标列必须存在于目标三角洲表。

  • updateAllinsertAll行动,源数据集必须有目标三角洲表的所有列。源数据集可以有额外的列,他们将被忽略。

  • 为所有操作,如果数据类型表达式生成的生产目标列不同于目标三角洲表中相应的列,合并试图把他们的类型表。

看到自动模式演化为三角洲湖合并