Operadores de chispa (funciones)
Todas las transformaciones en los RDD se cargan de forma diferida, lo que significa que no calculan los resultados directamente.
RDD puede almacenar en caché los resultados de cálculos anteriores a través del método de persistencia o el método de caché, pero estos resultados no se almacenarán en caché inmediatamente cuando se llamen a estos dos métodos, sino que el RDD se almacenará en caché en el nodo informático cuando se realicen operaciones posteriores. se activan en la memoria para su posterior reutilización.
Al observar el código fuente, encontramos que el caché también llama al método persist. El nivel de almacenamiento predeterminado almacena solo una copia en la memoria, pero hay varios otros niveles de almacenamiento en Spark, que se definen en el objeto StorageLevel.
Es posible que se pierda el caché o que los datos almacenados en la memoria se eliminen debido a una memoria insuficiente, mientras que RDD tiene un caché tolerante a fallas, lo que garantiza que los cálculos se realicen correctamente incluso si se pierde el caché. . Strong> Fault Tolerance
Ejemplo independiente:
Consideraciones sobre el directorio local: para este modo, debe ejecutar Spark-Shell en modo local
Consideraciones sobre el directorio HDFS: Para este modo, necesita ejecutar el shell en modo clúster
Fragmentos de código fuente
Sistema de línea
Dependencias RDD
Un estrecho relación de dependencia significa que cada partición del RDD principal es utilizada por más de una partición del RDD secundario
Una relación de dependencia amplia significa que múltiples particiones del RDD secundario dependerán de las particiones del mismo RDD principal
p>
La etapa DAG (gráfico acíclico dirigido) en la tarea Spark se denomina gráfico acíclico dirigido. En él, el RDD original se transformará en un DAG a través de una serie de transformaciones. el DAG se dividirá según las dependencias entre los RDD para las diferentes etapas. DAG se divide en diferentes etapas según las diferentes dependencias entre los RDD. Para dependencias estrechas, el proceso de transformación de particiones se realiza por etapas. Para dependencias amplias, debido a la existencia de Shu?e, el siguiente paso de cálculo solo se puede iniciar después de que se procese el RDD principal, por lo que las dependencias amplias son la base para dividir las etapas.
Obtenga el número de partición y el valor correspondiente de cada partición
Obtenga un parámetro de función:
Cree una función que devuelva el número de partición y el valor correspondiente de cada partición en los Elementos RDD:
Cree una función que devuelva cada número de partición y elemento en el RDD:
Llámelo:
Agrega localmente, luego agrega globalmente
Ver los elementos en cada partición:
Sumar los valores grandes en cada partición. Tenga en cuenta al sumar: el valor inicial es 0
Si el valor inicial es 10, el resultado es 45
Ejemplo de cadena:
Modificar la partición; acabas de ver Funciones en elementos
Elementos en dos particiones:
Resultado de la ejecución:
Un ejemplo más complejo
El resultado podría ser :
"24" o: "42" : 24" o: "42"
El resultado puede ser: "10" o "01"