Что означает «метод обработки в классе ForeachWriter типа (значение: org.apache.spark.sql.Row) Единица не определена» с ForeachWriter? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь использовать приемник foreach при записи моего кадра данных в таблицу кустов:

// dp is my dataframe (aggregated streaming data)
dp.writeStream.foreach(
  new ForeachWriter[Row] {
    def open(partitionId: Long, version: Long): Boolean = true
    def process(record: String): Unit = {
      //dp.createOrReplaceTempView("tableA")
      // i need to do insert into tablename (select * from tableA)
    }
    def close(errorOrNull: Throwable): Unit = {}
  }
).start()

Я получаю следующую ошибку

Ошибка: создание объекта невозможно, посколькуМетод процесса в классе ForeachWriter типа (значение: org.apache.spark.sql.Row) Единица не определена

В чем может быть проблема?

1 Ответ

0 голосов
/ 25 января 2019

Вы должны быть более осторожны с типами, то есть сравнивайте типы в ForeachWriter[Row] и def process(record: String): Unit.Они несовместимы и, следовательно, ошибка.

Из скалярного org.apache.spark.sql.ForeachWriter :

abstract class ForeachWriter[T]

и

abstract def process(value: T): Unit

Тип T является ключевым здесь.Используйте def process(record: Row): Unit, и это должно исправить ошибку компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...