Облако сообщества 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()