包 tables
- 按字母顺序
- 公共
- 受保护的
类型成员
- 类 DeltaColumnBuilder 继承 AnyRef
:: 演进中 :
- 注解
- @Evolving()
- 自
1.0.0
- 类 DeltaMergeBuilder 继承 AnalysisHelper 并混合 Logging
用于指定如何将数据从源 DataFrame 合并到目标 Delta 表的构建器。
构建器,用于指定如何将源 DataFrame 中的数据合并到目标 Delta 表中。您可以指定任意数量的 `whenMatched` 和 `whenNotMatched` 子句。以下是这些子句的约束。
whenMatched
子句whenMatched
子句中的条件是可选的。但是,如果有多个whenMatched
子句,则只有最后一个可以省略条件。- 当存在多个
whenMatched
子句并且存在条件(或缺乏条件)导致某行满足多个子句时,将执行第一个满足的子句的操作。换句话说,whenMatched
子句的顺序很重要。 - 如果所有
whenMatched
子句都没有匹配满足合并条件的源-目标行对,则目标行将不会被更新或删除。 - 如果要使用源 DataFrame 的相应列更新目标 Delta 表的所有列,则可以使用
whenMatched(...).updateAll()
。这等同于whenMatched(...).updateExpr(Map( ("col1", "source.col1"), ("col2", "source.col2"), ...))
whenNotMatched
子句whenNotMatched
子句中的条件是可选的。但是,如果有多个whenNotMatched
子句,则只有最后一个可以省略条件。- 当存在多个
whenNotMatched
子句并且存在条件(或缺乏条件)导致某行满足多个子句时,将执行第一个满足的子句的操作。换句话说,whenNotMatched
子句的顺序很重要。 - 如果没有
whenNotMatched
子句,或者它存在但非匹配的源行不满足条件,则源行不会被插入。 - 如果要使用源 DataFrame 的相应列插入目标 Delta 表的所有列,则可以使用
whenNotMatched(...).insertAll()
。这等同于whenNotMatched(...).insertExpr(Map( ("col1", "source.col1"), ("col2", "source.col2"), ...))
whenNotMatchedBySource
子句whenNotMatchedBySource
子句中的条件是可选的。但是,如果有多个whenNotMatchedBySource
子句,则只有最后一个可以省略条件。- 当存在多个
whenNotMatchedBySource
子句并且存在条件(或缺乏条件)导致某行满足多个子句时,将执行第一个满足的子句的操作。换句话说,whenNotMatchedBySource
子句的顺序很重要。 - 如果没有
whenNotMatchedBySource
子句,或者它存在但非匹配的目标行不满足任何whenNotMatchedBySource
子句条件,则目标行将不会被更新或删除。
Scala 示例:使用源 DataFrame 中的新键值更新键值 Delta 表
deltaTable .as("target") .merge( source.as("source"), "target.key = source.key") .withSchemaEvolution() .whenMatched() .updateExpr(Map( "value" -> "source.value")) .whenNotMatched() .insertExpr(Map( "key" -> "source.key", "value" -> "source.value")) .whenNotMatchedBySource() .updateExpr(Map( "value" -> "target.value + 1")) .execute()
Java 示例:使用源 DataFrame 中的新键值更新键值 Delta 表
deltaTable .as("target") .merge( source.as("source"), "target.key = source.key") .withSchemaEvolution() .whenMatched() .updateExpr( new HashMap<String, String>() {{ put("value", "source.value"); }}) .whenNotMatched() .insertExpr( new HashMap<String, String>() {{ put("key", "source.key"); put("value", "source.value"); }}) .whenNotMatchedBySource() .updateExpr( new HashMap<String, String>() {{ put("value", "target.value + 1"); }}) .execute();
- 自
0.3.0
- 类 DeltaMergeMatchedActionBuilder 继承 AnyRef
构建器类,用于指定当目标表行根据给定的合并条件和可选匹配条件匹配源行时要执行的操作。
构建器类,用于指定当目标表行根据给定的合并条件和可选匹配条件匹配源行时要执行的操作。
有关更多信息,请参见 DeltaMergeBuilder。
- 自
0.3.0
- 类 DeltaMergeNotMatchedActionBuilder 继承 AnyRef
构建器类,用于指定当源行未根据合并条件匹配任何目标 Delta 表行,但如果指定了附加条件,则匹配该条件时要执行的操作。
构建器类,用于指定当源行未根据合并条件匹配任何目标 Delta 表行,但如果指定了附加条件,则匹配该条件时要执行的操作。
有关更多信息,请参见 DeltaMergeBuilder。
- 自
0.3.0
- 类 DeltaMergeNotMatchedBySourceActionBuilder 继承 AnyRef
构建器类,用于指定当目标表行在源表中没有匹配项时(根据给定的合并条件和可选匹配条件)要执行的操作。
构建器类,用于指定当目标表行在源表中没有匹配项时(根据给定的合并条件和可选匹配条件)要执行的操作。
有关更多信息,请参见 DeltaMergeBuilder。
- 自
2.3.0
- 类 DeltaOptimizeBuilder 继承 AnalysisHelper
用于构建 OPTIMIZE 命令并执行的构建器类。
用于构建 OPTIMIZE 命令并执行的构建器类。
- 自
2.0.0
- 类 DeltaTable 继承 DeltaTableOperations 并混合 Serializable
用于以编程方式与 Delta 表交互的主类。
用于以编程方式与 Delta 表交互的主类。您可以使用静态方法创建 DeltaTable 实例。
DeltaTable.forPath(sparkSession, pathToTheDeltaTable)
- 自
0.3.0
- 类 DeltaTableBuilder 继承 AnyRef
:: 演进中 :
:: 演进中 :
用于指定如何创建/替换 Delta 表的构建器。您必须在执行构建器之前指定表名或路径。您可以指定表列、分区列、数据位置、表注释和属性,以及如何创建/替换 Delta 表。
执行构建器后,将返回 DeltaTable 的实例。
使用表名创建带生成列的 Delta 表的 Scala 示例
val table: DeltaTable = DeltaTable.create() .tableName("testTable") .addColumn("c1", dataType = "INT", nullable = false) .addColumn( DeltaTable.columnBuilder("c2") .dataType("INT") .generatedAlwaysAs("c1 + 10") .build() ) .addColumn( DeltaTable.columnBuilder("c3") .dataType("INT") .comment("comment") .nullable(true) .build() ) .partitionedBy("c1", "c2") .execute()
使用位置创建 Delta 表的 Scala 示例
val table: DeltaTable = DeltaTable.createIfNotExists(spark) .location("/foo/`bar`") .addColumn("c1", dataType = "INT", nullable = false) .addColumn( DeltaTable.columnBuilder(spark, "c2") .dataType("INT") .generatedAlwaysAs("c1 + 10") .build() ) .addColumn( DeltaTable.columnBuilder(spark, "c3") .dataType("INT") .comment("comment") .nullable(true) .build() ) .partitionedBy("c1", "c2") .execute()
替换表的 Java 示例
DeltaTable table = DeltaTable.replace() .tableName("db.table") .addColumn("c1", "INT", false) .addColumn( DeltaTable.columnBuilder("c2") .dataType("INT") .generatedAlwaysBy("c1 + 10") .build() ) .execute();
- 注解
- @Evolving()
- 自
1.0.0
值成员
- 对象 DeltaMergeBuilder
- 对象 DeltaMergeMatchedActionBuilder
- 对象 DeltaMergeNotMatchedActionBuilder
- 对象 DeltaMergeNotMatchedBySourceActionBuilder
- 对象 DeltaTable 继承 Serializable
用于创建 DeltaTable 实例的伴生对象。
用于创建 DeltaTable 实例的伴生对象。
DeltaTable.forPath(sparkSession, pathToTheDeltaTable)
- 自
0.3.0