Как рассчитать метрику по Exectuors в искре - PullRequest
1 голос
/ 16 января 2020

У меня блестящая работа со многими исполнителями.

Я хочу иметь возможность использовать счетчик на исполнителях для подсчета количества вхождений события. Например, посчитайте, сколько раз столбец «столбец» равен 10.

df.map(df => if(df.get("column")==10){ counter.inc } ; df)

В конечном итоге я хочу, чтобы итоговая сумма была суммой счетчиков для всех исполнителей.
Возможно ли это?

Когда мы сообщаем о метриках из драйвера искры, мы расширяем org. apache .spark.metrics.source.Source и регистрируем его в искровой среде. можно ли использовать эти показатели на исполнителях?

1 Ответ

1 голос
/ 16 января 2020

Я думаю, что лучший способ - использовать "сумму" агрегации Spark.

Таким образом, Spark внутренне выполнит агрегацию распределенным образом во всех узлах, а затем вернет аггреагат обратно драйверу.

df.withColumn("count_flag", when(col("column")==10, 1).otherwise(0))
  .agg(sum("count_flag") as "Total_Occurance_Of_Column_Value_10")
  .show()
...