Как определить, сможет ли сеанс Spark хранить размер данных в кадре? - PullRequest
1 голос
/ 30 октября 2019

Намерены читать данные из БД Oracle с помощью pyspark (работает в локальном режиме) и хранить локально как паркет. Есть ли способ определить, сможет ли фрейм данных сеанса искры удерживать объем данных из запроса (который будет всей таблицей, т. Е. select * from mytable)? Существуют ли общие решения, если данные не смогут поместиться в фрейм данных?

* Увидел похожий вопрос здесь , но его немного смутило обсуждение в комментариях

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Неважно, насколько велика таблица, если вы используете распределенную систему зажигания. Вам нужно беспокоиться о памяти, если: -

  1. Вы читаете данные в драйвере, а затем делаете трансляцию.
  2. Кэширование кадра данных для некоторых вычислений.

Обычно для вашего искрового приложения генерируется DAG, и если вы используете JDBC-источник, то рабочие будут непосредственно читать данные и использовать случайное перемешивание. пространство и объем памяти на диске для интенсивного вычисления памяти.

0 голосов
/ 30 октября 2019

Поскольку вы работаете на локальном компьютере, я предполагаю, что это не кластер. Вы не можете точно сказать, сколько памяти потребуется? Тем не менее, вы можете подойти близко к этому. Вы проверяете размер таблицы в зависимости от используемого дискового пространства. Предположим, что вы mytable заняли 1GB жесткого диска, тогда для спарка потребовалось бы больше ОЗУ, потому что движку Spark требовалось немного памяти для его собственной обработки. Попробуйте иметь 2GB больше, для большей безопасности, чем фактический размер таблицы.

Чтобы проверить размер таблицы в Oracle, вы можете использовать следующий запрос:

select segment_name,segment_type,bytes/1024/1024 MB
 from dba_segments
 where segment_type='TABLE' and segment_name='<yourtablename>';

Это даст вамрезультат MB.

Чтобы настроить связанный с JVM параметр в Apache-Spark, вы можете проверить this .

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