类 DeltaTable

Object
io.delta.tables.DeltaTable
所有已实现的接口:
io.delta.tables.execution.DeltaTableOperations, Serializable, org.apache.spark.sql.delta.util.AnalysisHelper

public class DeltaTable extends Object implements io.delta.tables.execution.DeltaTableOperations, Serializable
用于以编程方式与 Delta 表交互的主类。您可以使用静态方法创建 DeltaTable 实例。

   DeltaTable.forPath(sparkSession, pathToTheDeltaTable)
 

0.3.0
另请参阅
  • 嵌套类摘要

    从接口 org.apache.spark.sql.delta.util.AnalysisHelper 继承的嵌套类/接口

    org.apache.spark.sql.delta.util.AnalysisHelper.FakeLogicalPlan, org.apache.spark.sql.delta.util.AnalysisHelper.FakeLogicalPlan$
  • 方法摘要

    修饰符及类型
    方法
    描述
    void
    修改协议以添加支持的功能,如果表不支持表功能,则自动升级协议。
    alias(String alias)
    为 DeltaTable 应用别名。
    as(String alias)
    为 DeltaTable 应用别名。
    clone(String target, boolean isShallow)
    将 DeltaTable 克隆到给定目的地,以镜像现有表的数据和元数据。
    clone(String target, boolean isShallow, boolean replace)
    将 DeltaTable 克隆到给定目的地,以镜像现有表的数据和元数据。
    clone(String target, boolean isShallow, boolean replace, HashMap<String,String> properties)
    Python 实现使用 java.util.HashMap 作为 properties 参数的克隆。
    clone(String target, boolean isShallow, boolean replace, scala.collection.immutable.Map<String,String> properties)
    将 DeltaTable 克隆到给定目的地,以镜像现有表的数据和元数据。
    cloneAtTimestamp(String timestamp, String target, boolean isShallow)
    将指定时间戳的 DeltaTable 克隆到给定目的地,以镜像该时间戳的现有表的数据和元数据。
    cloneAtTimestamp(String timestamp, String target, boolean isShallow, boolean replace)
    将指定时间戳的 DeltaTable 克隆到给定目的地,以镜像该时间戳的现有表的数据和元数据。
    cloneAtTimestamp(String timestamp, String target, boolean isShallow, boolean replace, HashMap<String,String> properties)
    Python 实现使用 java.util.HashMap 作为 properties 参数的 cloneAtTimestamp。
    cloneAtTimestamp(String timestamp, String target, boolean isShallow, boolean replace, scala.collection.immutable.Map<String,String> properties)
    将指定时间戳的 DeltaTable 克隆到给定目的地,以镜像该时间戳的现有表的数据和元数据。
    cloneAtVersion(long version, String target, boolean isShallow)
    将指定版本的 DeltaTable 克隆到给定目的地,以镜像该版本现有表的数据和元数据。
    cloneAtVersion(long version, String target, boolean isShallow, boolean replace)
    将指定版本的 DeltaTable 克隆到给定目的地,以镜像该版本现有表的数据和元数据。
    cloneAtVersion(long version, String target, boolean isShallow, boolean replace, HashMap<String,String> properties)
    Python 实现使用 java.util.HashMap 作为 properties 参数的 cloneAtVersion。
    cloneAtVersion(long version, String target, boolean isShallow, boolean replace, scala.collection.immutable.Map<String,String> properties)
    将指定版本的 DeltaTable 克隆到给定目的地,以镜像该版本现有表的数据和元数据。
    :: 演进中 :
    columnBuilder(org.apache.spark.sql.SparkSession spark, String colName)
    :: 演进中 :
    static DeltaTable
    convertToDelta(org.apache.spark.sql.SparkSession spark, String identifier)
    从给定的 parquet 表创建 DeltaTable。
    static DeltaTable
    convertToDelta(org.apache.spark.sql.SparkSession spark, String identifier, String partitionSchema)
    从给定的 parquet 表和分区模式创建 DeltaTable。
    static DeltaTable
    convertToDelta(org.apache.spark.sql.SparkSession spark, String identifier, org.apache.spark.sql.types.StructType partitionSchema)
    从给定的 parquet 表和分区模式创建 DeltaTable。
    :: 演进中 :
    create(org.apache.spark.sql.SparkSession spark)
    :: 演进中 :
    :: 演进中 :
    createIfNotExists(org.apache.spark.sql.SparkSession spark)
    :: 演进中 :
    :: 演进中 :
    createOrReplace(org.apache.spark.sql.SparkSession spark)
    :: 演进中 :
    void
    从表中删除数据。
    void
    delete(String condition)
    从表中删除与给定 `condition` 匹配的数据。
    void
    delete(org.apache.spark.sql.Column condition)
    从表中删除与给定 `condition` 匹配的数据。
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    :: 演进中 :
    void
    修改协议以删除支持的功能。
    void
    dropFeatureSupport(String featureName, boolean truncateHistory)
    修改协议以删除支持的功能。
    static DeltaTable
    forName(String tableOrViewName)
    使用给定的表名实例化一个 DeltaTable 对象。
    static DeltaTable
    forName(org.apache.spark.sql.SparkSession sparkSession, String tableName)
    使用以下方式之一实例化一个 DeltaTable 对象:1。
    static DeltaTable
    实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。
    static DeltaTable
    forPath(org.apache.spark.sql.SparkSession sparkSession, String path)
    实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。
    static DeltaTable
    forPath(org.apache.spark.sql.SparkSession sparkSession, String path, Map<String,String> hadoopConf)
    Java 友好的 API,用于实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。
    static DeltaTable
    forPath(org.apache.spark.sql.SparkSession sparkSession, String path, scala.collection.Map<String,String> hadoopConf)
    实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。
    void
    为给定的 Delta 表生成清单
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    获取此表上可用提交的信息作为 Spark DataFrame。
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    history(int limit)
    获取此表上最新 `limit` 提交的信息作为 Spark DataFrame。
    static boolean
    isDeltaTable(String identifier)
    检查提供的 `identifier` 字符串(在这种情况下是文件路径)是否是 Delta 表的根目录。
    static boolean
    isDeltaTable(org.apache.spark.sql.SparkSession sparkSession, String identifier)
    使用给定的 SparkSession 检查提供的 `identifier` 字符串(在这种情况下是文件路径)是否是 Delta 表的根目录。
    merge(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> source, String condition)
    根据给定的合并 `condition` 合并来自 `source` DataFrame 的数据。
    merge(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> source, org.apache.spark.sql.Column condition)
    根据给定的合并 `condition` 合并来自 `source` DataFrame 的数据。
    优化表的数据布局。
    :: 演进中 :
    replace(org.apache.spark.sql.SparkSession spark)
    :: 演进中 :
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    将 DeltaTable 恢复到由时间戳指定的表的旧版本。
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    restoreToVersion(long version)
    将 DeltaTable 恢复到由版本号指定的表的旧版本。
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    获取此 Delta 表的 DataFrame(即 Dataset[Row])表示。
    void
    update(Map<String,org.apache.spark.sql.Column> set)
    根据 `set` 定义的规则更新表中的行。
    void
    update(org.apache.spark.sql.Column condition, Map<String,org.apache.spark.sql.Column> set)
    根据 `set` 定义的规则,从表中更新与给定 `condition` 匹配的行数据。
    void
    update(org.apache.spark.sql.Column condition, scala.collection.immutable.Map<String,org.apache.spark.sql.Column> set)
    根据 `set` 定义的规则,从表中更新与给定 `condition` 匹配的行数据。
    void
    update(scala.collection.immutable.Map<String,org.apache.spark.sql.Column> set)
    根据 `set` 定义的规则更新表中的行。
    void
    updateExpr(String condition, Map<String,String> set)
    根据给定 `condition` 匹配的行数据进行更新,执行 `set` 定义的规则。
    void
    updateExpr(String condition, scala.collection.immutable.Map<String,String> set)
    根据给定 `condition` 匹配的行数据进行更新,执行 `set` 定义的规则。
    void
    根据 `set` 定义的规则更新表中的行。
    void
    updateExpr(scala.collection.immutable.Map<String,String> set)
    根据 `set` 定义的规则更新表中的行。
    void
    upgradeTableProtocol(int readerVersion, int writerVersion)
    更新表的协议版本以利用新功能。
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    递归删除表中不需要的、用于维护旧版本(直到给定的保留阈值)的文件和目录。
    org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>
    vacuum(double retentionHours)
    递归删除表中不需要的、用于维护旧版本(直到给定的保留阈值)的文件和目录。

    从类 java.lang.Object 继承的方法

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    从接口 org.apache.spark.sql.delta.util.AnalysisHelper 继承的方法

    improveUnsupportedOpError, resolveReferencesForExpressions, toDataset, tryResolveReferences, tryResolveReferencesForExpressions, tryResolveReferencesForExpressions

    接口 io.delta.tables.execution.DeltaTableOperations 中继承的方法

    executeClone, executeClone$default$6, executeClone$default$7, executeDelete, executeDetails, executeGenerate, executeHistory, executeHistory$default$2, executeHistory$default$3, executeRestore, executeUpdate, executeVacuum, sparkSession, toStrColumnMap
  • 方法详情

    • convertToDelta

      public static DeltaTable convertToDelta(org.apache.spark.sql.SparkSession spark, String identifier, org.apache.spark.sql.types.StructType partitionSchema)
      从给定的 parquet 表和分区模式创建 DeltaTable。获取现有 parquet 表并在该表的基本路径中构建 Delta 事务日志。

      注意:转换过程中对表的任何更改都可能导致转换结束时状态不一致。用户应在转换开始前停止对表的任何更改。

      一个用法示例如下

      
        io.delta.tables.DeltaTable.convertToDelta(
         spark,
         "parquet.`/path`",
         new StructType().add(StructField("key1", LongType)).add(StructField("key2", StringType)))
       

      参数
      spark - (未记录)
      identifier - (未记录)
      partitionSchema - (未记录)
      返回
      (未记录)
      0.4.0
    • convertToDelta

      public static DeltaTable convertToDelta(org.apache.spark.sql.SparkSession spark, String identifier, String partitionSchema)
      从给定的 parquet 表和分区模式创建 DeltaTable。获取现有 parquet 表并在该表的基本路径中构建 Delta 事务日志。

      注意:转换过程中对表的任何更改都可能导致转换结束时状态不一致。用户应在转换开始前停止对表的任何更改。

      一个用法示例如下

      
        io.delta.tables.DeltaTable.convertToDelta(
         spark,
         "parquet.`/path`",
         "key1 long, key2 string")
       

      参数
      spark - (未记录)
      identifier - (未记录)
      partitionSchema - (未记录)
      返回
      (未记录)
      0.4.0
    • convertToDelta

      public static DeltaTable convertToDelta(org.apache.spark.sql.SparkSession spark, String identifier)
      从给定的 parquet 表创建 DeltaTable。获取现有 parquet 表并在该表的基本路径中构建 Delta 事务日志。

      注意:转换过程中对表的任何更改都可能导致转换结束时状态不一致。用户应在转换开始前停止对表的任何更改。

      一个示例如下

      
        io.delta.tables.DeltaTable.convertToDelta(
         spark,
         "parquet.`/path`"
       

      参数
      spark - (未记录)
      identifier - (未记录)
      返回
      (未记录)
      0.4.0
    • forPath

      public static DeltaTable forPath(String path)
      实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      参数
      path - (未记录)
      返回
      (未记录)
      0.3.0
    • forPath

      public static DeltaTable forPath(org.apache.spark.sql.SparkSession sparkSession, String path)
      实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。

      参数
      sparkSession - (未记录)
      path - (未记录)
      返回
      (未记录)
      0.3.0
    • forPath

      public static DeltaTable forPath(org.apache.spark.sql.SparkSession sparkSession, String path, scala.collection.Map<String,String> hadoopConf)
      实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。

      参数
      hadoopConf - 以“fs.”或“dfs.”开头的 Hadoop 配置将被 DeltaTable 选取,以在执行查询时访问文件系统。其他配置将不被允许。

      
         val hadoopConf = Map(
           "fs.s3a.access.key" -> "<access-key>",
           "fs.s3a.secret.key" -> "<secret-key>"
         )
         DeltaTable.forPath(spark, "/path/to/table", hadoopConf)
       
      sparkSession - (未记录)
      path - (未记录)
      返回
      (未记录)
      2.2.0
    • forPath

      public static DeltaTable forPath(org.apache.spark.sql.SparkSession sparkSession, String path, Map<String,String> hadoopConf)
      Java 友好的 API,用于实例化一个 DeltaTable 对象,表示给定路径的数据。如果给定路径无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。

      参数
      hadoopConf - 以“fs.”或“dfs.”开头的 Hadoop 配置将被 DeltaTable 选取,以在执行查询时访问文件系统。其他配置将被忽略。

      
         val hadoopConf = Map(
           "fs.s3a.access.key" -> "<access-key>",
           "fs.s3a.secret.key", "<secret-key>"
         )
         DeltaTable.forPath(spark, "/path/to/table", hadoopConf)
       
      sparkSession - (未记录)
      path - (未记录)
      返回
      (未记录)
      2.2.0
    • forName

      public static DeltaTable forName(String tableOrViewName)
      使用给定的表名实例化一个 DeltaTable 对象。如果给定的 tableOrViewName 无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。注意:传递视图名也会导致此错误,因为不支持视图。

      给定的 tableOrViewName 也可以是 delta 数据源的绝对路径(即 delta.path)。如果是,则实例化一个 DeltaTable 对象,表示给定路径的数据(与 forPath(java.lang.String) 一致)。

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      参数
      tableOrViewName - (未记录)
      返回
      (未记录)
    • forName

      public static DeltaTable forName(org.apache.spark.sql.SparkSession sparkSession, String tableName)
      使用以下方式之一实例化一个 DeltaTable 对象:1. 使用给定的 SparkSession 和 SessionCatalog 的给定 tableName。2. tableName 也可以是 delta 数据源的绝对路径(即 delta.path)。如果是,则实例化一个 DeltaTable 对象,表示给定路径的数据(与 forPath(java.lang.String) 一致)。3. 如果以 catalog.db.table 形式传递完全限定的 tableName,则通过指定的目录而不是默认的 *SessionCatalog* 解析表。

      如果给定的 tableName 无效(即不存在表或现有表不是 Delta 表),则抛出 not a Delta table 错误。注意:传递视图名也会导致此错误,因为不支持视图。

      参数
      sparkSession - (未记录)
      tableName - (未记录)
      返回
      (未记录)
    • isDeltaTable

      public static boolean isDeltaTable(org.apache.spark.sql.SparkSession sparkSession, String identifier)
      使用给定的 SparkSession 检查提供的 `identifier` 字符串(在这种情况下是文件路径)是否是 Delta 表的根目录。

      例如:

      
         DeltaTable.isDeltaTable(spark, "path/to/table")
       

      参数
      sparkSession - (未记录)
      identifier - (未记录)
      返回
      (未记录)
      0.4.0
    • isDeltaTable

      public static boolean isDeltaTable(String identifier)
      检查提供的 `identifier` 字符串(在这种情况下是文件路径)是否是 Delta 表的根目录。

      注意:这使用当前线程中活动的 SparkSession 搜索表。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      例如:

      
         DeltaTable.isDeltaTable(spark, "/path/to/table")
       

      参数
      identifier - (未记录)
      返回
      (未记录)
      0.4.0
    • create

      public static DeltaTableBuilder create()
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以创建 Delta 表,如果表存在则报错(与 SQL CREATE TABLE 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      返回
      (未记录)
      1.0.0
    • create

      public static DeltaTableBuilder create(org.apache.spark.sql.SparkSession spark)
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以创建 Delta 表,如果表存在则报错(与 SQL CREATE TABLE 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      参数
      spark - 用户传递的 sparkSession
      返回
      (未记录)
      1.0.0
    • createIfNotExists

      public static DeltaTableBuilder createIfNotExists()
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以创建 Delta 表,如果表不存在则创建(与 SQL CREATE TABLE IF NOT EXISTS 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      返回
      (未记录)
      1.0.0
    • createIfNotExists

      public static DeltaTableBuilder createIfNotExists(org.apache.spark.sql.SparkSession spark)
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以创建 Delta 表,如果表不存在则创建(与 SQL CREATE TABLE IF NOT EXISTS 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      参数
      spark - 用户传递的 sparkSession
      返回
      (未记录)
      1.0.0
    • replace

      public static DeltaTableBuilder replace()
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以替换 Delta 表,如果表不存在则报错(与 SQL REPLACE TABLE 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      返回
      (未记录)
      1.0.0
    • replace

      public static DeltaTableBuilder replace(org.apache.spark.sql.SparkSession spark)
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以替换 Delta 表,如果表不存在则报错(与 SQL REPLACE TABLE 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      参数
      spark - 用户传递的 sparkSession
      返回
      (未记录)
      1.0.0
    • createOrReplace

      public static DeltaTableBuilder createOrReplace()
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以替换 Delta 表或在不存在时创建表(与 SQL CREATE OR REPLACE TABLE 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      返回
      (未记录)
      1.0.0
    • createOrReplace

      public static DeltaTableBuilder createOrReplace(org.apache.spark.sql.SparkSession spark)
      :: 演进中 :

      返回一个 DeltaTableBuilder 实例以替换 Delta 表,或在不存在时创建表(与 SQL CREATE OR REPLACE TABLE 相同)。有关更多详细信息,请参阅 DeltaTableBuilder

      参数
      spark - 用户传递的 sparkSession。
      返回
      (未记录)
      1.0.0
    • columnBuilder

      public static DeltaColumnBuilder columnBuilder(String colName)
      :: 演进中 :

      返回 DeltaColumnBuilder 的实例以指定列。有关示例,请参阅 DeltaTableBuilder,有关详细 API,请参阅 DeltaColumnBuilder

      注意:这使用当前线程中活动的 SparkSession 读取表数据。因此,如果未设置活动的 SparkSession,即 SparkSession.getActiveSession() 为空,则会抛出错误。

      参数
      colName - 字符串列名
      返回
      (未记录)
      1.0.0
    • columnBuilder

      public static DeltaColumnBuilder columnBuilder(org.apache.spark.sql.SparkSession spark, String colName)
      :: 演进中 :

      返回 DeltaColumnBuilder 的实例以指定列。有关示例,请参阅 DeltaTableBuilder,有关详细 API,请参阅 DeltaColumnBuilder

      参数
      spark - 用户传递的 sparkSession
      colName - 字符串列名
      返回
      (未记录)
      1.0.0
    • as

      public DeltaTable as(String alias)
      为 DeltaTable 应用别名。这类似于 Dataset.as(alias) 或 SQL tableName AS alias

      参数
      alias - (未记录)
      返回
      (未记录)
      0.3.0
    • alias

      public DeltaTable alias(String alias)
      为 DeltaTable 应用别名。这类似于 Dataset.as(alias) 或 SQL tableName AS alias

      参数
      alias - (未记录)
      返回
      (未记录)
      0.3.0
    • toDF

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> toDF()
      获取此 Delta 表的 DataFrame(即 Dataset[Row])表示。

      返回
      (未记录)
      0.3.0
    • vacuum

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> vacuum(double retentionHours)
      递归删除表中在给定保留阈值之前维护旧版本不需要的文件和目录。此方法在成功完成后将返回一个空的 DataFrame。

      参数
      retentionHours - 保留阈值(小时)。用于读取早于此版本的表所需的文件将被保留,其余的将被删除。
      返回
      (未记录)
      0.3.0
    • vacuum

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> vacuum()
      递归删除表中在给定保留阈值之前维护旧版本不需要的文件和目录。此方法在成功完成后将返回一个空的 DataFrame。

      注意:这将使用 7 天的默认保留期。

      返回
      (未记录)
      0.3.0
    • history

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> history(int limit)
      以 Spark DataFrame 的形式获取此表上最新 limit 次提交的信息。信息按时间倒序排列。

      参数
      limit - 要获取历史记录的先前命令的数量

      返回
      (未记录)
      0.3.0
    • history

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> history()
      以 Spark DataFrame 的形式获取此表上可用的提交信息。信息按时间倒序排列。

      返回
      (未记录)
      0.3.0
    • detail

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> detail()
      :: 演进中 :

      获取 Delta 表的详细信息,例如格式、名称和大小。

      返回
      (未记录)
      2.1.0
    • generate

      public void generate(String mode)
      为给定的 Delta 表生成清单

      参数
      mode - 指定清单生成的模式。有效的模式如下(不区分大小写):- "symlink_format_manifest":这将生成符号链接格式的清单,用于 Presto 和 Athena 读取支持。有关更多信息,请参阅在线文档。
      0.5.0
    • delete

      public void delete(String condition)
      从表中删除与给定 `condition` 匹配的数据。

      参数
      condition - 布尔 SQL 表达式

      0.3.0
    • delete

      public void delete(org.apache.spark.sql.Column condition)
      从表中删除与给定 `condition` 匹配的数据。

      参数
      condition - 布尔 SQL 表达式

      0.3.0
    • delete

      public void delete()
      从表中删除数据。

      0.3.0
    • optimize

      public DeltaOptimizeBuilder optimize()
      优化表的数据布局。这将返回一个 DeltaOptimizeBuilder 对象,可用于指定分区筛选器以限制优化范围,并执行不同的优化技术,例如文件压缩或使用 Z-Order 曲线排序数据。

      有关此操作的完整说明,请参阅 DeltaOptimizeBuilder

      在表中子集分区上运行文件压缩的 Scala 示例

      
          deltaTable
           .optimize()
           .where("date='2021-11-18'")
           .executeCompaction();
       

      返回
      (未记录)
      2.0.0
    • 更新

      public void update(scala.collection.immutable.Map<String,org.apache.spark.sql.Column> set)
      根据 `set` 定义的规则更新表中的行。

      递增 data 列的 Scala 示例。

      
          import org.apache.spark.sql.functions._
      
          deltaTable.update(Map("data" -> col("data") + 1))
       

      参数
      set - 将行更新为目标列名和相应的更新表达式(作为 Column 对象)之间的 Scala 映射的规则。
      0.3.0
    • 更新

      public void update(Map<String,org.apache.spark.sql.Column> set)
      根据 `set` 定义的规则更新表中的行。

      递增 data 列的 Java 示例。

      
          import org.apache.spark.sql.Column;
          import org.apache.spark.sql.functions;
      
          deltaTable.update(
            new HashMap<String, Column>() {{
              put("data", functions.col("data").plus(1));
            }}
          );
       

      参数
      set - 作为目标列名和相应的更新表达式(作为 Column 对象)之间的 Java 映射的行更新规则。
      0.3.0
    • 更新

      public void update(org.apache.spark.sql.Column condition, scala.collection.immutable.Map<String,org.apache.spark.sql.Column> set)
      根据 `set` 定义的规则,从表中更新与给定 `condition` 匹配的行数据。

      递增 data 列的 Scala 示例。

      
          import org.apache.spark.sql.functions._
      
          deltaTable.update(
            col("date") > "2018-01-01",
            Map("data" -> col("data") + 1))
       

      参数
      condition - 作为 Column 对象的布尔表达式,指定要更新的行。
      set - 将行更新为目标列名和相应的更新表达式(作为 Column 对象)之间的 Scala 映射的规则。
      0.3.0
    • 更新

      public void update(org.apache.spark.sql.Column condition, Map<String,org.apache.spark.sql.Column> set)
      根据 `set` 定义的规则,从表中更新与给定 `condition` 匹配的行数据。

      递增 data 列的 Java 示例。

      
          import org.apache.spark.sql.Column;
          import org.apache.spark.sql.functions;
      
          deltaTable.update(
            functions.col("date").gt("2018-01-01"),
            new HashMap<String, Column>() {{
              put("data", functions.col("data").plus(1));
            }}
          );
       

      参数
      condition - 作为 Column 对象的布尔表达式,指定要更新的行。
      set - 作为目标列名和相应的更新表达式(作为 Column 对象)之间的 Java 映射的行更新规则。
      0.3.0
    • updateExpr

      public void updateExpr(scala.collection.immutable.Map<String,String> set)
      根据 `set` 定义的规则更新表中的行。

      递增 data 列的 Scala 示例。

      
          deltaTable.updateExpr(Map("data" -> "data + 1")))
       

      参数
      set - 将行更新为目标列名和相应的更新表达式(作为 SQL 格式的字符串)之间的 Scala 映射的规则。
      0.3.0
    • updateExpr

      public void updateExpr(Map<String,String> set)
      根据 `set` 定义的规则更新表中的行。

      递增 data 列的 Java 示例。

      
          deltaTable.updateExpr(
            new HashMap<String, String>() {{
              put("data", "data + 1");
            }}
          );
       

      参数
      set - 作为目标列名和相应的更新表达式(作为 SQL 格式的字符串)之间的 Java 映射的行更新规则。
      0.3.0
    • updateExpr

      public void updateExpr(String condition, scala.collection.immutable.Map<String,String> set)
      根据给定 `condition` 匹配的行数据进行更新,执行 `set` 定义的规则。

      递增 data 列的 Scala 示例。

      
          deltaTable.update(
            "date > '2018-01-01'",
            Map("data" -> "data + 1"))
       

      参数
      condition - 作为 SQL 格式字符串对象的布尔表达式,指定要更新的行。
      set - 将行更新为目标列名和相应的更新表达式(作为 SQL 格式的字符串)之间的 Scala 映射的规则。
      0.3.0
    • updateExpr

      public void updateExpr(String condition, Map<String,String> set)
      根据给定 `condition` 匹配的行数据进行更新,执行 `set` 定义的规则。

      递增 data 列的 Java 示例。

      
          deltaTable.update(
            "date > '2018-01-01'",
            new HashMap<String, String>() {{
              put("data", "data + 1");
            }}
          );
       

      参数
      condition - 作为 SQL 格式字符串对象的布尔表达式,指定要更新的行。
      set - 作为目标列名和相应的更新表达式(作为 SQL 格式的字符串)之间的 Java 映射的行更新规则。
      0.3.0
    • merge

      public DeltaMergeBuilder merge(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> source, String condition)
      根据给定的合并 condition 合并来自 source DataFrame 的数据。这将返回一个 DeltaMergeBuilder 对象,可用于根据行是否匹配条件来指定对行执行的更新、删除或插入操作。

      有关此操作的完整说明以及允许的更新、删除和插入操作的组合,请参阅 DeltaMergeBuilder

      Scala 示例:使用源 DataFrame 中的新键值更新键值 Delta 表

      
          deltaTable
           .as("target")
           .merge(
             source.as("source"),
             "target.key = source.key")
           .whenMatched
           .updateExpr(Map(
             "value" -> "source.value"))
           .whenNotMatched
           .insertExpr(Map(
             "key" -> "source.key",
             "value" -> "source.value"))
           .execute()
       

      Java 示例:使用源 DataFrame 中的新键值更新键值 Delta 表

      
          deltaTable
           .as("target")
           .merge(
             source.as("source"),
             "target.key = source.key")
           .whenMatched
           .updateExpr(
              new HashMap<String, String>() {{
                put("value" -> "source.value");
              }})
           .whenNotMatched
           .insertExpr(
              new HashMap<String, String>() {{
               put("key", "source.key");
               put("value", "source.value");
             }})
           .execute();
       

      参数
      source - 要合并的源 Dataframe。
      condition - 布尔表达式作为 SQL 格式的字符串
      返回
      (未记录)
      0.3.0
    • merge

      public DeltaMergeBuilder merge(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> source, org.apache.spark.sql.Column condition)
      根据给定的合并 condition 合并来自 source DataFrame 的数据。这将返回一个 DeltaMergeBuilder 对象,可用于根据行是否匹配条件来指定对行执行的更新、删除或插入操作。

      有关此操作的完整说明以及允许的更新、删除和插入操作的组合,请参阅 DeltaMergeBuilder

      Scala 示例:使用源 DataFrame 中的新键值更新键值 Delta 表

      
          deltaTable
           .as("target")
           .merge(
             source.as("source"),
             "target.key = source.key")
           .whenMatched
           .updateExpr(Map(
             "value" -> "source.value"))
           .whenNotMatched
           .insertExpr(Map(
             "key" -> "source.key",
             "value" -> "source.value"))
           .execute()
       

      Java 示例:使用源 DataFrame 中的新键值更新键值 Delta 表

      
          deltaTable
           .as("target")
           .merge(
             source.as("source"),
             "target.key = source.key")
           .whenMatched
           .updateExpr(
              new HashMap<String, String>() {{
                put("value" -> "source.value")
              }})
           .whenNotMatched
           .insertExpr(
              new HashMap<String, String>() {{
               put("key", "source.key");
               put("value", "source.value");
             }})
           .execute()
       

      参数
      source - 要合并的源 Dataframe。
      condition - 布尔表达式作为 Column 对象
      返回
      (未记录)
      0.3.0
    • restoreToVersion

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> restoreToVersion(long version)
      将 DeltaTable 恢复到由版本号指定的表的旧版本。

      例如:

       io.delta.tables.DeltaTable.restoreToVersion(7) 
      @since 1.2.0
      参数
      version - (未记录)
      返回
      (未记录)
    • restoreToTimestamp

      public org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> restoreToTimestamp(String timestamp)
      将 DeltaTable 恢复到由时间戳指定的表的旧版本。

      时间戳可以是 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 格式

      例如:

       io.delta.tables.DeltaTable.restoreToTimestamp("2019-01-01") 
      @since 1.2.0
      参数
      timestamp - (未记录)
      返回
      (未记录)
    • upgradeTableProtocol

      public void upgradeTableProtocol(int readerVersion, int writerVersion)
      更新表的协议版本以利用新功能。升级读取器版本将阻止所有具有旧版本 Delta Lake 的客户端访问此表。升级写入器版本将阻止旧版本 Delta Lake 写入此表。读取器或写入器版本不能降级。

      有关更多详细信息,请参阅在线文档和 PROTOCOL.md 中的 Delta 协议规范。

      参数
      readerVersion - (未记录)
      writerVersion - (未记录)
      0.8.0
    • addFeatureSupport

      public void addFeatureSupport(String featureName)
      修改协议以添加受支持的功能,如果表不支持表功能,则自动升级协议。在这种情况下,当提供功能为仅写入时,表的写入器版本将升级到 7;当提供功能为读写时,读取器和写入器版本都将升级到 (3, 7)

      有关更多详细信息,请参阅在线文档和 PROTOCOL.md 中的 Delta 协议规范。

      参数
      featureName - (未记录)
      2.3.0
    • dropFeatureSupport

      public void dropFeatureSupport(String featureName, boolean truncateHistory)
      修改协议以删除受支持的功能。此操作始终会规范化生成的协议。协议规范化是将表功能协议转换为最弱形式的过程。这主要指将表功能协议转换为旧协议。仅当前者的功能集与旧协议完全匹配时,表功能协议才能用旧表示形式表示。当表功能协议的读取器版本高于必要时,规范化也可以降低其读取器版本。例如

      (1, 7, None, {AppendOnly, Invariants, CheckConstraints}) -> (1, 3) (3, 7, None, {RowTracking}) -> (1, 7, RowTracking)

      dropFeatureSupport 方法可按如下方式使用

      
         io.delta.tables.DeltaTable.dropFeatureSupport("rowTracking")
       

      有关更多详细信息,请参阅在线文档。

      参数
      featureName - 要删除的功能的名称。
      truncateHistory - 是否在降级协议之前截断历史记录。
      3.4.0
    • dropFeatureSupport

      public void dropFeatureSupport(String featureName)
      修改协议以删除受支持的功能。此操作始终会规范化生成的协议。协议规范化是将表功能协议转换为最弱形式的过程。这主要指将表功能协议转换为旧协议。仅当前者的功能集与旧协议完全匹配时,表功能协议才能用旧表示形式表示。当表功能协议的读取器版本高于必要时,规范化也可以降低其读取器版本。例如

      (1, 7, None, {AppendOnly, Invariants, CheckConstraints}) -> (1, 3) (3, 7, None, {RowTracking}) -> (1, 7, RowTracking)

      dropFeatureSupport 方法可按如下方式使用

      
         io.delta.tables.DeltaTable.dropFeatureSupport("rowTracking")
       

      注意,此命令不会截断历史记录。

      有关更多详细信息,请参阅在线文档。

      参数
      featureName - 要删除的功能的名称。
      3.4.0
    • clone

      public DeltaTable clone(String target, boolean isShallow, boolean replace, scala.collection.immutable.Map<String,String> properties)
      将 DeltaTable 克隆到给定目的地,以镜像现有表的数据和元数据。

      此处指定属性意味着目标将使用用户定义的属性覆盖源表中具有相同键的任何属性。

      例如:

      
        io.delta.tables.DeltaTable.clone(
         "/some/path/to/table",
         true,
         true,
         Map("foo" -> "bar"))
       

      参数
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。
      properties - 克隆中要覆盖的表属性。

      返回
      (未记录)
      3.3.0
    • clone

      public DeltaTable clone(String target, boolean isShallow, boolean replace, HashMap<String,String> properties)
      Python 实现使用 java.util.HashMap 作为 properties 参数的克隆。

      此处指定属性意味着目标将使用用户定义的属性覆盖源表中具有相同键的任何属性。

      例如:

      
         io.delta.tables.DeltaTable.clone(
           "/some/path/to/table",
           true,
           true,
           Map("foo" -> "bar"))
       

      参数
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。
      properties - 克隆中要覆盖的表属性。
      返回
      (未记录)
    • clone

      public DeltaTable clone(String target, boolean isShallow, boolean replace)
      将 DeltaTable 克隆到给定目的地,以镜像现有表的数据和元数据。

      例如:

      
         io.delta.tables.DeltaTable.clone(
           "/some/path/to/table",
           true,
           true)
       

      参数
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。

      返回
      (未记录)
      3.3.0
    • clone

      public DeltaTable clone(String target, boolean isShallow)
      将 DeltaTable 克隆到给定目的地,以镜像现有表的数据和元数据。

      例如:

      
         io.delta.tables.DeltaTable.clone(
           "/some/path/to/table",
           true)
       

      参数
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。

      返回
      (未记录)
      3.3.0
    • cloneAtVersion

      public DeltaTable cloneAtVersion(long version, String target, boolean isShallow, boolean replace, scala.collection.immutable.Map<String,String> properties)
      将指定版本的 DeltaTable 克隆到给定目的地,以镜像该版本现有表的数据和元数据。

      此处指定属性意味着目标将使用用户定义的属性覆盖源表中具有相同键的任何属性。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtVersion(
           5,
           "/some/path/to/table",
           true,
           true,
           Map("foo" -> "bar"))
       

      参数
      version - 要克隆的表的版本。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。
      properties - 克隆中要覆盖的表属性。

      返回
      (未记录)
      3.3.0
    • cloneAtVersion

      public DeltaTable cloneAtVersion(long version, String target, boolean isShallow, boolean replace, HashMap<String,String> properties)
      Python 实现使用 java.util.HashMap 作为 properties 参数的 cloneAtVersion。

      此处指定属性意味着目标将使用用户定义的属性覆盖源表中具有相同键的任何属性。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtVersion(
           5,
           "/some/path/to/table",
           true,
           true,
           new java.util.HashMap[String, String](Map("foo" -> "bar").asJava))
       

      参数
      version - 要克隆的表的版本。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。
      properties - 克隆中要覆盖的表属性。
      返回
      (未记录)
    • cloneAtVersion

      public DeltaTable cloneAtVersion(long version, String target, boolean isShallow, boolean replace)
      将指定版本的 DeltaTable 克隆到给定目的地,以镜像该版本现有表的数据和元数据。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtVersion(
           5,
           "/some/path/to/table",
           true,
           true)
       

      参数
      version - 要克隆的表的版本。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。

      返回
      (未记录)
      3.3.0
    • cloneAtVersion

      public DeltaTable cloneAtVersion(long version, String target, boolean isShallow)
      将指定版本的 DeltaTable 克隆到给定目的地,以镜像该版本现有表的数据和元数据。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtVersion(
           5,
           "/some/path/to/table",
           true)
       

      参数
      version - 要克隆的表的版本。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。

      返回
      (未记录)
      3.3.0
    • cloneAtTimestamp

      public DeltaTable cloneAtTimestamp(String timestamp, String target, boolean isShallow, boolean replace, scala.collection.immutable.Map<String,String> properties)
      将指定时间戳的 DeltaTable 克隆到给定目的地,以镜像该时间戳的现有表的数据和元数据。

      时间戳可以是 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 格式。

      此处指定属性意味着目标将使用用户定义的属性覆盖源表中具有相同键的任何属性。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtTimestamp(
           "2019-01-01",
           "/some/path/to/table",
           true,
           true,
           Map("foo" -> "bar"))
       

      参数
      timestamp - 要克隆的表的版本的时间戳。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。
      properties - 克隆中要覆盖的表属性。

      返回
      (未记录)
      3.3.0
    • cloneAtTimestamp

      public DeltaTable cloneAtTimestamp(String timestamp, String target, boolean isShallow, boolean replace, HashMap<String,String> properties)
      Python 实现使用 java.util.HashMap 作为 properties 参数的 cloneAtTimestamp。

      在特定时间戳将 DeltaTable 克隆到给定目标,以镜像该版本中现有表的数据和元数据。此处指定属性意味着目标将使用用户定义的属性覆盖源表中具有相同键的任何属性。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtVersion(
           5,
           "/some/path/to/table",
           true,
           true,
           new java.util.HashMap[String, String](Map("foo" -> "bar").asJava)
       

      参数
      timestamp - 要克隆的表的版本的时间戳。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。
      properties - 克隆中要覆盖的表属性。
      返回
      (未记录)
    • cloneAtTimestamp

      public DeltaTable cloneAtTimestamp(String timestamp, String target, boolean isShallow, boolean replace)
      将指定时间戳的 DeltaTable 克隆到给定目的地,以镜像该时间戳的现有表的数据和元数据。

      时间戳可以是 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 格式。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtTimestamp(
           "2019-01-01",
           "/some/path/to/table",
           true,
           true)
       

      参数
      timestamp - 要克隆的表的版本的时间戳。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。
      replace - 是否使用克隆命令替换目标。

      返回
      (未记录)
      3.3.0
    • cloneAtTimestamp

      public DeltaTable cloneAtTimestamp(String timestamp, String target, boolean isShallow)
      将指定时间戳的 DeltaTable 克隆到给定目的地,以镜像该时间戳的现有表的数据和元数据。

      时间戳可以是 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 格式。

      例如:

      
         io.delta.tables.DeltaTable.cloneAtTimestamp(
           "2019-01-01",
           "/some/path/to/table",
           true)
       

      参数
      timestamp - 要克隆的表的版本的时间戳。
      target - 要创建克隆的路径或表名。
      isShallow - 是否创建浅克隆或深克隆。

      返回
      (未记录)
      3.3.0