【问题标题】:Truncate Kudu table using Spark使用 Spark 截断 Kudu 表
【发布时间】:2018-04-24 16:18:59
【问题描述】:

从 spark 中截断 kudu 表的最佳方法是什么?有没有类似 SQL "TRUNCATE TABLE_NAME;"还是“从 TALBE_NAME 中删除;”?

我刚刚设法找到了 kuduContext.deleteRows,但它需要明确的规范行才能删除。

或者我应该使用 KuduClient 而不是 Spark 进行此类操作?

【问题讨论】:

    标签: apache-spark truncate apache-kudu


    【解决方案1】:

    我在 KuduClient 中找不到任何截断表的操作。 对于 kudu 删除行,必须明确提及 id。

    documentaion 中提到的最简单的方法(使用最短的代码)是读取 id(或所有主键)作为数据帧并将其传递给KuduContext.deleteRows

    import org.apache.kudu.spark.kudu._
    
    val kuduMasters = Seq("kudu_ubuntu:7051").mkString(",")
    val tableName = "test_tbl"
    val kuduContext = new KuduContext(kuduMasters, sc)
    val df = spark.sqlContext.read.
        options(Map("kudu.master" -> kuduMasters,
                     "kudu.table" -> tableName)).
        kudu
    val idToDelete = df.select("no")                // contains ids for existing rows.
    kuduContext.deleteRows(idToDelete, tableName)   // delete rows
    

    注意:我使用 spark-2 和包 org.apache.kudu:kudu-spark2_2.11:1.6.0 进行 kudu 连接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多