Я подсчитываю, сколько времени потребуется для завершения конкретной работы на Spark, в этом случае, сколько времени требуется, чтобы сохранить выходной RDD. Сохранение RDD связано с его сжатием.Интересное изменение производительности в бенчмаркинге Код искры
Что странно, так это то, что первое выполнение кода всегда медленнее по сравнению со вторым выполнением точно такой же части кода. Как это может быть?
Программа Спарк выглядит следующим образом:
JavaPairRDD<String, String> semisorted = wordsAndChar.sortByKey();
//First run
long startTime1 = System.currentTimeMillis();
semisorted.saveAsTextFile("testData.txt" + "_output1", org.apache.hadoop.io.compress.DefaultCodec.class);
long runTime1 = System.currentTimeMillis() - startTime1;
//Second run
long startTime2 = System.currentTimeMillis();
semisorted.saveAsTextFile("testData.txt" + "_output2", org.apache.hadoop.io.compress.DefaultCodec.class);
long runTime2 = System.currentTimeMillis() - startTime2;
sc.stop();
искровым представить --master местный [1] --class com.john.Test my.jar /пользователь/джон/Testdata. TXT/пользователь/John/testData_output
выход:
runTime1 = 126 сек
runTime2 = 82 сек
Как такое большое изменение может быть два (точно такие же) работу?
RDDs ленивы. Первый запуск, вероятно, кэшируется в памяти для второго и последующих запусков. –
Кроме того, два прогона на одной машине не так уж и важны: –
@ cricket_007, «два прогона», потому что первый запуск занял слишком много времени. У меня даже было 3 и более трасс. В каждом случае первый запуск был самым медленным. Это просто «тестирование» - вышло надежное число из 1 машины, прежде чем сравнивать с чьей-то машиной. – nikk