截断 Kudu table 使用 spark
Truncate Kudu table using Spark
从 spark 中截断 kudu table 的最佳方法是什么?有没有SQL"TRUNCATE TABLE_NAME;"或"DELETE FROM TALBE_NAME;"的类似物?
我刚找到 kuduContext.deleteRows,但它需要明确的规范行才能删除。
或者我应该使用 KuduClient 而不是 Spark 来进行此类操作?
我在 KuduClient 中找不到任何截断 table 的操作。
使用 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
注意:我使用带有包org.apache.kudu:kudu-spark2_2.11:1.6.0
的spark-2进行kudu连接
从 spark 中截断 kudu table 的最佳方法是什么?有没有SQL"TRUNCATE TABLE_NAME;"或"DELETE FROM TALBE_NAME;"的类似物?
我刚找到 kuduContext.deleteRows,但它需要明确的规范行才能删除。
或者我应该使用 KuduClient 而不是 Spark 来进行此类操作?
我在 KuduClient 中找不到任何截断 table 的操作。 使用 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
注意:我使用带有包org.apache.kudu:kudu-spark2_2.11:1.6.0
的spark-2进行kudu连接