Параллельная работа с сотнями путей S3 с использованием искры в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Параллельная работа с сотнями путей S3 с использованием искры в Java

Сообщение Anonymous »

У меня есть вариант использования, который требует, чтобы система считывала содержимое из сотен путей S3, после чтения содержимого по пути она исключает определенные записи, а затем перезаписывает их обратно в то же место. Он использует искру 3.4 и Java 17 и работает на AWS EMR в режиме кластера.

Код: Выделить всё

            final List errorPaths       = new ArrayList ();//Deadletter queue
final Dataset exclusionContent = sparkSession.read ().parquet ("s3://some/path/having/eclusion/content");
//hundredsOfPaths is list of all the paths that need to be read, exclude some data and rewrite
hundredsOfPaths.stream ().parallel ().forEach (pathInContext -> {
try {
final Dataset originalContent = sparkSession.read ().parquet (pathInContext).cache ();
final long         countOriginal   = originalContent.count ();
final Dataset finalContent    = originalContent.except (exclusionContent).cache ();
final long         finalCount      = finalContent.count ();
finalContent.repartition (1)
.write ()
.format ("parquet")
.mode (SaveMode.Overwrite)
.save (pathInContext);
}
catch (Throwable e) {
//If there is any error in any of the paths interaction, then reprocess
errorPaths.add (pathInContext);
}
});
//Reprocess all paths accumulated in errorPaths

Выше будет использоваться распараллеливание Java Stream (

Код: Выделить всё

paths.stream ().parallel ().forEach...
) в любом случае мешает встроенному параллелизму Spark, сообщите, пожалуйста.

Подробнее здесь: https://stackoverflow.com/questions/783 ... rk-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»