Обрезать таблицу Kudu с помощью Spark

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

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

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


person Vladimir Kravets    schedule 24.04.2018    source источник


Ответы (1)


Я не смог найти ни одной операции для усечения таблицы в 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 для подключения куду

person shanmuga    schedule 03.09.2018