Это очень повторяющаяся и важная проблема, когда кто-то начинает работать с большими наборами данных.Большие данные - это отдельная тема, вот краткое введение в основные понятия.
1.Подготовьте ваш набор данных
В больших данных от 80% до 90% времени тратится на сбор, фильтрацию и подготовку ваших наборов данных.Создавайте подмножества данных, оптимизируя их для дальнейшей обработки.
2.Оптимизируйте ваш скрипт
Короткий код не всегда означает оптимизированный код с точки зрения производительности.В вашем случае, не зная о вашем наборе данных, трудно сказать точно, как вы должны его обработать, вам придется самостоятельно выяснить, как избежать максимально возможного вычисления, получая точно такой же результат.Старайтесь избегать ненужных вычислений.
Вы также можете разделить работу на несколько потоков, если это необходимо.
Как правило, вы не должны использовать петли for
и break
их внутри.Когда вы точно не знаете, сколько циклов вам придется пройти, вы всегда должны использовать циклы while
или do...while
.
3.Подумайте об использовании распределенного хранилища и вычислений
Этот вопрос сам по себе слишком велик, чтобы его можно было здесь объяснить.
Хранение, доступ и обработка данных в сериализованном виде быстрее для небольшого объема данных, но очень не подходит для больших наборов данных.Вместо этого мы используем распределенные системы хранения и вычисления.
Он стремится делать все параллельно.Он опирается на концепцию с именем MapReduce .
Первая структура распределенного хранения данных была Hadoop (например, Распределенная файловая система Hadoop или HDFS ).Эта структура имеет свои преимущества и недостатки, в зависимости от вашего приложения.
В любом случае, если вы хотите использовать эту платформу, для вас, вероятно, будет более целесообразным не использовать MR непосредственно поверх HDFS , но с использованиемверхний уровень, предпочтительно в памяти, такой как Spark или Apache Ignite поверх HDFS .Также, в зависимости от ваших потребностей, попробуйте взглянуть на такие фреймворки, как, например, Hive , Pig или Sqoop .
Опять же, этот предмет - совершенно другой мир, но вполне может быть адаптирован к вашей ситуации.Не стесняйтесь документировать себя обо всех этих концепциях и структурах и оставлять свои вопросы, если необходимо, в комментариях.