Усечь таблицу Куду с помощью Spark - PullRequest
0 голосов
/ 24 апреля 2018

Как лучше всего обрезать таблицу куду от спарк? Есть ли какой-нибудь аналог SQL "TRUNCATE TABLE_NAME;" или "УДАЛИТЬ ИЗ TALBE_NAME;"?

Мне только что удалось найти kuduContext.deleteRows, но для удаления требуются явные строки спецификации.

Или я должен использовать KuduClient, а не Spark для таких операций?

1 Ответ

0 голосов
/ 03 сентября 2018

Не удалось найти ни одной операции для усеченной таблицы в KuduClient. При удалении строк в kudu идентификаторы должны быть явно указаны.

Самый простой способ (с самым коротким кодом) сделать это, как упомянуто в документации , - это прочитать идентификатор (или все первичные ключи) как фрейм данных и передать его 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 для подключения куду

...