нестабильная работа с искровым RDD [дубликат]

Это не вызвано этим парсером json. Просто попробуйте ввести 714341252076979033 в консоль fbug. Вы увидите тот же 714341252076979100.

Подробнее см. В этом блоге: http://www.exploringbinary.com/print-precision-of-floating-point-integers-varies-too

-4
задан user3293666 2 March 2016 в 04:59
поделиться

2 ответа

Прочтите Руководство по программированию, в нем есть раздел, посвященный этому: Понимание закрытий . Если вам действительно нужно собрать какое-либо состояние, вы можете использовать Аккумуляторы (но обратите внимание, что вы не можете получить доступ к значению из узлов-исполнителей, только его исправьте). Но сначала попробуйте без них: подумайте о доступных преобразованиях вместо мутирующего состояния.

2
ответ дан Alexey Romanov 19 August 2018 в 11:56
поделиться

То, как вы рассуждаете о программе, неверно. foreach выполняется независимо от каждого исполнителя и изменяет свою собственную копию sum. Здесь нет глобального общего состояния. Просто подсчитайте значения напрямую:

df.select("column1").distinct.count

Если вы действительно хотите обработать это вручную, вам понадобится некоторый тип reduce:

df.select("column1").distinct.rdd.map(_ => 1L).reduce(_ + _)
7
ответ дан zero323 19 August 2018 в 11:56
поделиться
  • 1
    спасибо @ zero323, как я могу хранить значение на итерации в этом случае. Я хочу получить различные значения в столбце в виде списка строк – user3293666 29 February 2016 в 20:05
  • 2
    distinct.collect.toList – zero323 1 March 2016 в 03:45
Другие вопросы по тегам:

Похожие вопросы: