Lidando com um grande arquivo compactado com gzip no Spark

Tenho um arquivo gzip grande (com cerca de 85 GB compactado) da s3 que estou tentando processar com o Spark no AWS EMR (agora com uma instância principal m4.xlarge e duas instâncias principais m4.10xlarge, cada uma com um volume EBS de 100 GB) . Estou ciente de que o gzip é um formato de arquivo não divisível eEu tenho visto isto sugerido esse deve reparticionar o arquivo compactado porque o Spark inicialmente fornece um RDD com uma partição. No entanto, depois de fazer

scala> val raw = spark.read.format("com.databricks.spark.csv").
     | options(Map("delimiter" -> "\\t", "codec" -> "org.apache.hadoop.io.compress.GzipCodec")).
     | load("s3://path/to/file.gz").
     | repartition(sc.defaultParallelism * 3)
raw: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [_c0: string, _c1: string ... 48 more fields
scala> raw.count()

e, observando a interface do usuário do aplicativo Spark, ainda vejo apenas um executor ativo (os outros 14 estão mortos) com uma tarefa, e o trabalho nunca termina (ou pelo menos não esperei o tempo suficiente).

O que está acontecendo aqui? Alguém pode me ajudar a entender como o Spark está funcionando neste exemplo?Devo estar usando uma configuração de cluster diferente?Infelizmente, não tenho controle sobre o modo de compactação, mas existe uma maneira alternativa de lidar com esse arquivo?

questionAnswers(3)

yourAnswerToTheQuestion