Работа Spark занимает много времени для чтения данных из файла HDFS с использованием wholeTextFiles - PullRequest
0 голосов
/ 21 февраля 2020

Я хочу обработать данные из файла HDFS, используя код Spark Java. При обработке файлов я выполняю простое преобразование, такое как замена новой строки пробелом и поиск шаблонов с помощью регулярных выражений из файла. Я использовал метод wholeTextFiles для чтения данных из файлов HDFS, но для обработки только 4 МБ файлов потребовалось 2 часа.

Spark-код:

public class TransformationOper {
public static void main(String[] args){    
SparkConf sparkConf = new SparkConf().setAppName("Spark RDD Filter").setMaster("local[2]")
 .set("spark.yarn.queue","llap").set("spark.executor.instances", "4").set("spark.executor.memory","4g")
           .set("spark.executor.cores", "2").set("spark.driver.memory","2g")
           .set("sun.io.serialization.extendedDebugInfo","true").set("sun.io.serialization.extendedDebugInfo","true");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
JavaPairRDD<String, String> textFile = sc.wholeTextFiles("hdfs://sandbox-hdp.hortonworks.com:8020"+args[0]);
  JavaRDD<String> re = textFile.map( t -> t._2);    
  JavaRDD<String> r2 = re.map( s -> s.replaceAll("\r\n|\n", " ")); 
r2.saveAsTextFile("hdfs://sandbox-hdp.hortonworks.com:8020"+args[1]); 
sc.close();
}
}

Я пытался увеличить память искрового исполнителя до 15g с 4 экземплярами, но это заняло 2 часа. У меня есть 1 мастер с памятью 56 ГБ, 8 ядер и 3 рабочих с памятью 28 ГБ, 8 ядер. Как повысить производительность работы с искрой, используя эти конфигурации узлов.

Спасибо,

...