(2) Descripción general y cinco características principales de RDD
1. ¿Qué es RDD?
Un conjunto de datos distribuido resiliente (RDD), la abstracción básica en Spark. Representa una colección particionada e inmutable de elementos que se pueden operar en paralelo.
RDD es un conjunto de datos distribuidos flexible y la abstracción básica de Spark es inmutable y consta de múltiples particiones (que pueden distribuirse en varias máquinas y pueden almacenarse en la memoria. También se pueden almacenar en el disco). , etc.) y puede funcionar en paralelo
Elasticidad: tolerante a fallos en informática distribuida
Inmutable: una vez generado, no se puede cambiar
El RDD El código fuente es el siguiente: (/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala)
Interpretación:
1) Clase abstracta: no se puede usar directamente y debe implementarse con la ayuda de subclases. Cuando la use, solo use sus subclases
2) Serialización: en el marco de computación distribuida, el rendimiento de. el marco de serialización es La calidad afecta directamente el rendimiento de todo el marco
3) registro: registro, no viene con la versión 2.0, debe escribir uno usted mismo
4) T: Los genéricos admiten varios tipos de datos
5) sparkcontext
6) @transient
2. Cinco características principales de RDD
1 ) Una lista de particiones
RDD se compone de muchas particiones En la fórmula de cálculo de Spark, el número de particiones corresponde al número de tareas a ejecutar
2) Una función para. calcular cada división
Calcular RDD es equivalente a calcular cada división o partición de RDD
3) Una lista de dependencias de otros RDD
Hay dependencias entre RDD , rastreable
4) Opcionalmente, un particionador para RDD de valor-clave (por ejemplo, para decir que el RDD está particionado mediante hash)
Si los datos almacenados en el RDD son de valor-clave formulario, puede pasar un particionador personalizado para volver a particionar, por ejemplo, puede particionar por valor hash de clave
5) Opcionalmente, una lista de ubicaciones preferidas para calcular cada división (por ejemplo, ubicaciones de bloques para un archivo HDFS )
La ubicación óptima para el cálculo es la localidad de los datos.
Al calcular cada división, es mejor ejecutar la tarea localmente en la máquina donde se encuentra la división para evitar movimientos. de datos; la división tiene múltiples copias, por lo que hay más de una ubicación preferida
Donde están los datos, se debe dar prioridad
El trabajo se programa en la máquina donde se encuentran los datos, lo que reduce la E/S de datos y la transmisión de red, a fin de reducir mejor el tiempo de ejecución del trabajo (principio de barril: el tiempo de ejecución del trabajo depende del tiempo requerido para ejecutar la tarea más lenta) y mejorar rendimiento p>
3. Las cinco características principales de RDD se reflejan en el código fuente
(Característica 2) El parámetro de entrada de la función de cálculo debe ser una partición, porque calcular el RDD es equivalente a calcular cada partición
p>(Característica 1) getPartitions debe devolver una matriz compuesta por una serie de datos de tipo Partición
(Característica 3) Hay dependencias entre RDD
(Característica 5 )
(Característica 4)