使用Spark截断Kudu表

问题描述 投票:0回答:1

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

我只是设法找到kuduContext.deleteRows,但它需要删除显式规范行。

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

apache-spark truncate apache-kudu
1个回答
0
投票

我在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连接

© www.soinside.com 2019 - 2024. All rights reserved.