Преобразование кадра данных в JSON занимает много времени - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть фрейм данных из 10000 записей, которые я хочу преобразовать в формат JSON и отправить обратно в веб-сервис.Но df.toJSON (). Collect () занимает много времени [~ 10 секунд].Может кто-нибудь подсказать, есть ли способ сократить это время

df.toJSON (). Collect ()

1 Ответ

0 голосов
/ 17 апреля 2019

это может быть несколько разных вещей ...

  1. json может занять некоторое время для сериализации, особенно если вы используете API R или Python, потому что это отдельный процесс, и его необходимо вернутьсяи далее между собственными исполнителями JVM на рабочих узлах для сериализации / десериализации объектов
  2. , если вы выполнили какие-либо "широкие преобразования", такие как агрегация или объединение до df.collect (), вы, скорее всего, вызвали случайное перемешивание, которое приведет кв 200 разделах по умолчанию, записываемых на диск, следовательно, когда вы вызываете метод collect, он должен извлекать эти данные с диска, который медленнее, чем извлечение из RAM
  3. , хотя ваш набор данных мал, вам может потребоваться увеличить RAM по умолчанию для исполнителя,ядра исполнителей (слоты), количество исполнителей и перенастройка количества разделов для получения большего параллелизма

проверка количества разделов

df.rdd.getNumPartitions()

проверка перемешивания разделов

spark.conf.get("spark.sql.shuffle.partitions")

проверить другие конфиги, такие как ram исполнителя, ядра и экземпляры

spark.sparkContext.getConf().getAll()

spark isжестокий зверь для борьбы ... лучше посетите официальную документацию, чтобы узнать больше!https://spark.apache.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...