groupByKey в наборе данных Spark, выполнение пользовательской логики вдоль агрегации - PullRequest
0 голосов
/ 27 мая 2018

Можно ли выполнить собственную логику при группировке набора данных Spark?Вот пример простой печати в консоль, но я хотел бы, например, сохранить сгруппированные наборы данных (после выполнения дополнительных операций) в отдельные файлы.В моем примере печать «Привет» на консоли не работает.

// import spark.implicits._

case class Student(name: String, grade: String)

val students = sc.parallelize(Seq(
  Student("John", "A"),
  Student("John", "B"),
  Student("Amy", "C")
)).toDF().as[Student]

def someFunc(key:String, values:Iterator[Student]): TraversableOnce[(String,Student)] = {
  println("Hey") // HOW TO GET THIS DONE ?
 return values.map(x => (key, x))
}

val groups = students.groupByKey(t => t.name).flatMapGroups(someFunc).show()

1 Ответ

0 голосов
/ 28 мая 2018

В моем примере печать «Привет» на консоли не работает.

Ничто не мешает вам выполнить произвольный * код в замыкании.Однако вы не можете ожидать увидеть вывод stdout.Помните, что этот код выполняется на удаленных хостах, а не на вашем локальном компьютере.

Если вы хотите собирать какие-либо выходные данные, кроме аккумуляторов или обновлений задач, используйте надлежащие журналы и сборщик журналов.

* Пока он не использует распределенные структуры данных и контексты Spark.

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