La muestra de chispas es demasiado lenta
Estoy tratando de ejecutar una muestra aleatoria simple con Scala de una tabla existente, que contiene alrededor de 100e6 registros.
import org.apache.spark.sql.SaveMode
val nSamples = 3e5.toInt
val frac = 1e-5
val table = spark.table("db_name.table_name").sample(false, frac).limit(nSamples)
(table
.write
.mode(SaveMode.Overwrite)
.saveAsTable("db_name.new_name")
)
Pero está tardando demasiado (~ 5h según mis estimaciones).
Información útil:
Tengo ~ 6 trabajadores. Al analizar el número de particiones de la tabla obtengo:11433
.
No estoy seguro de si la proporción de particiones / trabajadores es razonable.
Estoy ejecutando Spark 2.1.0 usando Scala.
Yo he tratado:
La eliminación de la.limit()
parte.
Cambiandofrac
a1.0
, 0.1
etc.
Pregunta: ¿cómo puedo hacerlo más rápido?
Mejor,