(EDIT: посмотрев, где этот вопрос начался, он действительно оказался в гораздо лучшем месте. Он оказался хорошим ресурсом на границах размеров RDD в Spark при настройке через SparkContext.parallelize() по сравнению с фактическим размером лимиты RDD, а также раскрыты некоторые аргументы для распараллеливания(), которые не найдены в пользовательских документах. Особенно обратите внимание на комментарии нуль323 и его принятый ответ.)Настройка искровых RDD-размеров: Кастинг длинный до Double внутри 10^9 + для цикла, действительно плохая идея?
Ничего нового под солнцем, но я не могу найти этот вопрос уже задан .. . Вопрос заключается в том, как неправильно/нецелесообразно/нецелесообразно запускать листинг внутри большого цикла for в Java.
Я хочу запустить цикл for для инициализации Arraylist, прежде чем передать его методу SparkContext.parallelize(). Я нашел передачу неинициализированного массива, чтобы Spark мог вызвать пустую ошибку коллекции.
Я видел много сообщений о том, как плавают и удваиваются плохие идеи, как счетчики, я получаю это, просто кажется, что это тоже плохая идея? Как должен быть лучший способ?
numListLen будет 10^6 * 10^3 на данный момент, возможно, как большой на 10^12 в какой-то момент.
List<Double> numList = new ArrayList<Double>(numListLen);
for (long i = 0; i < numListLen; i++) {
numList.add((double) i);
}
Мне бы хотелось услышать, где именно этот код падает и может быть улучшен. Я студент-младший студент CS, поэтому я еще не видел всех углов хаха. Here's a CMU page seemingly approving this approach in C с использованием неявного литья.
Только для фона, numList собирается передать Спарк, чтобы сказать ему, сколько раз, чтобы запустить моделирование и создать RDD с результатами, как это:
JavaRDD DataSet = jsc.parallelize (numList, SLICES_AKA_PARTITIONS);
// the function will be applied to each member of dataSet
Double count = dataSet.map(new Function<Double, Double>() {...
(На самом деле я хотел бы, чтобы запустить этот ArrayList создание через Спарк, но это, кажется, не принимают достаточно времени, чтобы гарантировать, что 5 секунд на моем i5 двухъядерных, но если увеличить до 10^12, то ... дольше)
_ Мне бы очень хотелось услышать, где именно этот код падает. - для начала вы не можете выделить 'ArrayList' больше, чем' Integer.MAX_VALUE'. – zero323
О, да, он перевернулся и пытается назначить отрицательную длину ArrayList ... очень полезная обратная связь, я знал, что если бы я привел Искра на картинке, я мог бы получить от вас ответ. Спасибо, и если вы хотите ответить на этот вопрос и решить основной вопрос о том, есть ли более эффективный способ бросить, я бы принял ответ. – JimLohse
И, я полагаю, в этом ключе максимальная «длина» RDD - это максимальная длина коллекции scala? Per Spark Java docs для parallelize() aka makeRDD() - public RDD makeRDD (scala.collection.Seq seq ... Я думаю, что это отдельный вопрос, который будет искать это и спросить, не могу ли я его найти : max length of spark RDD –
JimLohse