Задача не сериализуется в community.cloud.databricks - PullRequest
1 голос
/ 06 октября 2019

Облако сообщества Databricks выдает исключение org.apache.spark.SparkException: Task not serializable, из-за которого мой локальный компьютер не выдает выполнение того же кода.

Код взят из книги Spark in Action. Код выполняет чтение файла json с данными об активности github, затем читает файл с именами сотрудников из изобретенной компании и, в конечном итоге, ранжирует сотрудников по количеству нажатий.

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

import org.apache.spark.sql.SparkSession
import scala.io.Source.fromURL

val spark = SparkSession.builder()
.appName("GitHub push counter")
.master("local[*]")
.getOrCreate()

val sc = spark.sparkContext

val inputPath = "/FileStore/tables/2015_03_01_0-a829c.json"
val pushes = spark.read.json(inputPath).filter("type = 'PushEvent'")
val grouped = pushes.groupBy("actor.login").count.orderBy(grouped("count").desc)

val empPath = "https://raw.githubusercontent.com/spark-in-action/first-edition/master/ch03/ghEmployees.txt"
val employees = Set() ++ (for { line <- fromURL(empPath).getLines} yield line.trim)

val bcEmployees = sc.broadcast(employees)

import spark.implicits._
val isEmp = user => bcEmployees.value.contains(user)
val isEmployee = spark.udf.register("SetContainsUdf", isEmp)
val filtered = ordered.filter(isEmployee($"login"))
filtered.show()

1 Ответ

1 голос
/ 07 октября 2019

Если у вас есть пользовательские классы, такие как сотрудник / пользователь, то вам необходимо реализовать интерфейс сериализации. При работе с пользовательскими объектами пользователя необходимо выполнять сериализацию, необходимо сериализовать их.

Задача не сериализуема: java.io. NotSerializableException при вызове функции вне замыкания только для классов, а не для объектов

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