hadoop - tutorial - mapreduce java example
Diferencia entre la divisiĆ³n de mapreduce y la pariciĆ³n de chispa (1)
¿Hay alguna diferencia significativa en la partición de datos cuando se trabaja con Hadoop / mapreduce y Spark?
Spark es compatible con todos los formatos de E / S de hadoop ya que usa las mismas API de Hadoop InputFormat junto con sus propios formateadores. Por lo tanto, las particiones de entrada Spark funcionan de la misma manera que las divisiones de entrada Hadoop / MapReduce de forma predeterminada . El tamaño de los datos en una partición puede ser configurable en tiempo de ejecución y proporciona una transformación como repartition
, coalesce
y repartitionAndSortWithinPartition
Además, la repartitionAndSortWithinPartition
puede otorgarle control directo sobre el número de particiones que se calculan.
¿Hay algún caso en el que su procedimiento de partición de datos pueda diferir?
Además de Hadoop, I / O APIs Spark tiene algunos otros formatos de E / S inteligentes (Ej: Databricks CSV y NoSQL DB Connectors ) que devolverán directamente DataSet/DateFrame
(más elementos de alto nivel sobre RDD) que son específicos de chispa .
Puntos clave en las particiones de chispa al leer datos de fuentes que no son de Hadoop
- El tamaño máximo de una partición es en última instancia por los conectores,
- para S3, la propiedad es como
fs.s3n.block.size
ofs.s3.block.size
. - La propiedad de Cassandra es
spark.cassandra.input.split.size_in_mb
. - Mongo prop es ,
spark.mongodb.input.partitionerOptions.partitionSizeMB
.
- para S3, la propiedad es como
- Por defecto, el número de particiones es el
max(sc.defaultParallelism, total_data_size / data_block_size)
. algunas veces, el número de núcleos disponibles en el clúster también aumenta el número de particiones comosc.parallaize()
sin elsc.parallaize()
partions.
Leer más .. link1
Quería preguntar si existe alguna diferencia significativa en la partición de datos cuando se trabaja con Hadoop / MapReduce y Spark . Ambos trabajan en HDFS (TextInputFormat) por lo que debería ser el mismo en teoría.
¿Hay algún caso donde el procedimiento de partición de datos puede diferir? Cualquier idea sería muy útil para mi estudio.
Gracias