Разница в производительности при сериализации между типом объекта и статически типизированным - PullRequest
0 голосов
/ 06 мая 2020

Нужно ли нам статически вводить / объявлять тип данных переменной, когда мы собираемся сериализовать? Улучшает ли это производительность при сериализации?

Я создаю проект flink для пакетной обработки. Я написал специальный читатель ввода, который будет читать из базы данных через jdb c и возвращает запись как Hashmap, содержащую имя и значение столбца. Я знаю, что Flink сериализует объекты между подзадачами. Итак, мой вопрос: поскольку у меня есть хэш-карта, в которой значения типа object, влияет ли это на производительность сериализации?

Flink по умолчанию использует сериализатор kyro

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

Спасибо @David Anderson, очень полезная статья. Я использовал строки для достижения лучшей производительности, он внутренне использует object []. Нет никакой разницы в производительности для stati c typed vs type object. Как и в случае с kryo, это не имеет значения

0 голосов
/ 06 мая 2020

Сериализация и десериализация хэш-карты стоит дорого. Если бы вы могли заставить эту работу, например, кортежи или строки, это было бы лучше. Или вы можете рассмотреть возможность реализации настраиваемого источника таблиц, а затем воспользоваться преимуществами API Table / SQL и его оптимизаций.

В блоге Apache Flink есть недавняя статья с подробной информацией о сериализации, включая раздел о производительности. Я рекомендую всю статью, но для оценки производительности см. https://flink.apache.org/news/2020/04/15/flink-serialization-tuning-vol-1.html#performance -сравнение . Ваши результаты, безусловно, будут отличаться от тех, что показаны в этой статье - производительность сериализации сильно различается в зависимости от деталей того, что вы делаете, - но общие шаблоны, показанные там, заслуживают внимания.

Именно Трудно сказать, сколько вы получите от беспокойства обо всем этом. Чтобы знать наверняка, вам нужно будет провести собственный сравнительный анализ. Что касается вашего вопроса о типе stati c - я не уверен, но предполагаю, что с Kryo это не будет иметь большого значения.

...