tutorial spark significado resilient lazy coin apache-spark rdd

apache spark - spark - ¿Hay un "Explicar RDD" en chispa?



rdd significado (1)

En particular, si digo

rdd3 = rdd1.join(rdd2)

luego, cuando llamo a rdd3.collect , dependiendo del Partitioner utilizado, cualquiera de los datos se mueve entre las particiones de los nodos, o la unión se realiza localmente en cada partición (o, por lo que sé, otra cosa por completo). Esto depende de lo que el documento RDD denomine dependencias "estrechas" y "amplias", pero quién sabe qué tan bueno es el optimizador en la práctica.

De todos modos, puedo deducir de la salida de rastreo qué cosa realmente sucedió, pero sería bueno llamar a rdd3.explain .

¿Existe tal cosa?


Creo que toDebugString apaciguará tu curiosidad.

scala> val data = sc.parallelize(List((1,2))) data: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[8] at parallelize at <console>:21 scala> val joinedData = data join data joinedData: org.apache.spark.rdd.RDD[(Int, (Int, Int))] = MapPartitionsRDD[11] at join at <console>:23 scala> joinedData.toDebugString res4: String = (8) MapPartitionsRDD[11] at join at <console>:23 [] | MapPartitionsRDD[10] at join at <console>:23 [] | CoGroupedRDD[9] at join at <console>:23 [] +-(8) ParallelCollectionRDD[8] at parallelize at <console>:21 [] +-(8) ParallelCollectionRDD[8] at parallelize at <console>:21 []

Cada sangría es una etapa, por lo que debe ejecutarse en dos etapas.

Además, el optimizador es bastante decente, sin embargo, le sugiero que use DataFrames si está usando 1.3+, ya que el optimizador es incluso mejor en muchos casos :)