Spark: потерянный драйвер исполнителя на локальном хосте

#apache-spark

#apache-spark

Вопрос:

Я запускаю приложение Spark, которое принимает таблицу mysql (30 миллионов строк) и находит шаблоны.

 val sqlContext = new SQLContext(sc)

sqlContext
  .read.format("jdbc").option("driver", "com.mysql.jdbc.Driver")
  .option("url", url)
  .option("dbtable", "MyTable")
  .option("user", "MyUser").option("password", "MyPwd")
  .load().registerTempTable("MyTable")

def getPattern(patent: String) = patent.replaceAll("\d", "d")

sqlContext.sql("select distinct(code) from MyTable")
  .map(_.getString(0)) 
  .groupBy(getPattern)
  .mapValues(_.size)
  .saveAsTextFile("/tmp/result")
  

Я запускаю приложение на локальном хосте. Сбой приложения с:

 2016-09-30 15:11:47,812 [dispatcher-event-loop-4] WARN  HeartbeatReceiver - Removing executor driver with no recent heartbeats: 129149 ms exceeds timeout 120000 ms
2016-09-30 15:11:47,819 [dispatcher-event-loop-4] ERROR TaskSchedulerImpl - Lost executor driver on localhost: Executor heartbeat timed out after 129149 ms
  

Почему это так? это проблема с памятью?

Это проблема с подключением к mysql?

Я знаю, что я мог бы заменить .groupBy(getPattern).mapValues(_.size) на .map(getPattern).countByValue , сделав его более эффективным и, возможно, избежать ошибки. Однако этот вопрос касается понимания ошибки.

Комментарии:

1. Вы когда-нибудь получали ответ на это (здесь или где-то еще)? У меня аналогичная проблема.

2. нет 🙁 ………