2016-06-08 2 views
0

Я вычисляю большое количество первых сообщений из одного набора данных. Мои очень мелкие тесты отлично работают. Но когда я увеличиваю количество отчетов в топ-n, задание отклоняется как слишком большое.Как я могу уменьшить нагрузку на поток данных?

Работа JSON (через --dataflowJobFile) составляет 19 МБ.

Этот эксперимент был посвящен 200 отчетам о начале и не охватывает все типы отчетов. В масштабах производства мы будем обрабатывать 10 000 новых отчетов из нескольких наборов данных.

Выполнение параллельных заданий нецелесообразно, так как рабочие подразделения должны быть разделены в неудобных способов, и одновременно ограничения работы только 25.

я могу поделиться иды работу и работу файлов в частном порядке с командой GCDF.

+0

Как относятся к первому докладу? Что делает их 200 различными отчетами top-N, а не только топ-N-ключ для 200 ключей? –

+0

GCDF имеет ограничение на размер заданий размером 20 МБ - так что это вероятная причина отклонения вашей работы. Какие изменения в вашем коде при переходе от малогабаритного теста к полному тесту? Кроме того, можете ли вы поделиться идентификаторами работы? – pjesa

+0

ID вакансии: 2016-06-07_18_47_26-16910805709550021335 Я не могу начать полноразмерную работу. Этот размер всего лишь 1/3. –

ответ

1

Что вы хотите сделать, это переместить проблемы размера в свои данные, а не в размер вашего конвейера. От «плоскости управления» до «плоскости данных», если хотите.

Для каждого подмножества ваших данных, на котором вы хотите запустить отчет, назначьте этому подмножеству ключ. Предполагая, что каждый из отчетов уже настроен для каждого ключа, вы захотите создать составной ключ, который включает как исходный ключ, так и ключ отчета. Затем вы можете рассчитать все топ-n отчетов (для конкретного n) вместе как Top.largestPerKey(n) на одном PCollection.

Предположим, у вас есть несколько top- п отчеты для различных пороговых значений, таких как топ-10, топ-100 и т.д., а также взаимосвязь между п и подмножество ваших данных слишком сложна, чтобы просто запустить самый большой и чернослив, чтобы получить других. Затем вы можете либо запустить отдельное преобразование для каждого n (по-прежнему не должно быть слишком много), либо собрать composed combine, который вычисляет их все вместе.

Смежные вопросы