ExceptionInInitializerError при добавлении меток в макеты [duplicate]

Ответ Джастина является удивительным, и этот ответ углубляется.

Алгоритм repartition выполняет полную перетасовку и создает новые разделы с распределенными данными. Давайте создадим DataFrame с номерами от 1 до 12.

val x = (1 to 12).toList
val numbersDf = x.toDF("number")

numbersDf содержит 4 раздела на моей машине.

numbersDf.rdd.partitions.size // => 4

Вот как данные делятся на разделы:

Partition 00000: 1, 2, 3
Partition 00001: 4, 5, 6
Partition 00002: 7, 8, 9
Partition 00003: 10, 11, 12

Давайте сделаем полное перетасовку с помощью метода repartition и получим эти данные на двух узлах.

val numbersDfR = numbersDf.repartition(2)

Вот как numbersDfR данные разделены на моей машине:

Partition A: 1, 3, 4, 6, 7, 9, 10, 12
Partition B: 2, 5, 8, 11

Метод repartition создает новые разделы и равномерно распределяет данные в новых разделах (распределение данных более равномерно для больших наборов данных).

. Разница между coalesce и repartition

coalesce использует существующие разделы, чтобы свести к минимуму количество перетасованных данных. repartition создает новые разделы и выполняет полную перетасовку. coalesce приводит к разделам с разным количеством данных (иногда разделов с разными размерами) и repartition приводит к примерно равным размерам разделов.

Быстрее ли coalesce или repartition?

coalesce может работать быстрее, чем repartition, но разделы с неравным размером, как правило, работают медленнее, чем разделы с равным размером. Как правило, вам необходимо перераспределить наборы данных после фильтрации большого набора данных. Я нашел repartition более быстрым, потому что Spark построен для работы с равными размерами разделов.

Прочитайте это сообщение в блоге , если вы хотите получить более подробную информацию.

2
задан Stefan B 22 April 2016 в 12:11
поделиться

2 ответа

Почему возникает ошибка при создании static Label, но не static Rectangle?

По сути, это вопрос порядка инициализации. Платформа UI должна быть правильно инициализирована при создании объектов Node. Потенциально это также может случиться с Rectangle, но, скорее всего, Label (который является Control) полагается даже на правильно инициализированную платформу. В этом конкретном случае разница в том, что объекты Shape не требуют CSS, а объекты Control -. Это приводит к тому, что методы платформы вызывается как показано в трассировке стека в тот момент, когда инструментарий еще не инициализирован.

  • Элемент класса static инициализируется при загрузке class mvce , Это делается до вызова метода main() и, следовательно, до вызова метода launch(). Платформа еще не инициализирована на данный момент.
  • Нестатический член, с другой стороны, инициализируется при создании экземпляра class mvce. class mvce создается внутри метода launch() после правильной инициализации инструментария.

Кроме того, обычно нет причин использовать статические ссылки. Просто используйте член.

4
ответ дан Andreas Fester 19 August 2018 в 04:37
поделиться
  • 1
    Элементы управления требуют CSS, поэтому Control имеет статический инициализатор, который эффективно вызывает Application.setUserAgentStylesheet(), который делегирует поток приложений FX. Это генерирует исключение для меня, если я создаю элемент управления в обычном ванильном Java-классе (но не в подклассе Application, как в коде OP). Rectangle не требует CSS. – James_D 22 April 2016 в 12:40
  • 2
    Спасибо, что помогли парням. На мой вопрос ответили! – Stefan B 22 April 2016 в 16:37

Вы пытались просто объявить статическую метку, но instanciate и установить ее позже в методе start ()? Это тоже должно работать.

2
ответ дан TvR 19 August 2018 в 04:37
поделиться
Другие вопросы по тегам:

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