Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es la diferencia entre transformaciones y operaciones en RDD?

¿Cuál es la diferencia entre transformaciones y operaciones en RDD?

En el nivel de tiempo de ejecución, la transformación es en realidad una acción lógica encadenada, que registra el proceso de evolución del RDD, y la acción es la acción que esencialmente activa la transformación para iniciar el cálculo. Dado que cada transformación tiene un registro, cada RDD sabe cómo funciona. El RDD anterior se transformó al estado actual, por lo que puede volver a realizar el cálculo fácilmente si algo sale mal. Los RDD saben cómo el RDD anterior pasó al estado actual, por lo que si algo sale mal, el proceso de cálculo se puede volver a ejecutar fácilmente.

Descripción general de transformaciones y operaciones

Detalles específicos de las transformaciones

map(func): Devuelve un nuevo conjunto de datos distribuidos formado por la función func Compuesto por cada original elemento transformado

filtro(func): Devuelve un nuevo conjunto de datos que consta de cada elemento original transformado por la función func. Un nuevo conjunto de datos que consta de elementos originales convertidos por la función func y que devuelven verdadero

*flatMap(func): similar al mapa, pero para cada elemento de entrada, se asignará a 0 a múltiples elementos de salida ( por lo tanto, el valor de retorno de la función func es una Seq, no un solo elemento)

flatMap(func): similar al mapa, pero para cada elemento de entrada, 0 se asignará a múltiples elementos de salida (por lo tanto , el valor de retorno de la función func es una Seq, no un solo elemento)

muestra(conReemplazo, frac, semilla):

Basado en las semillas aleatorias dadas. Muestra aleatoriamente una fracción numérica

union(otherDataset): devuelve un nuevo conjunto de datos combinado por el conjunto de datos y los parámetros originales

groupByKey([numTasks]):

Se llama a un conjunto de datos que consta de pares (K, V) para devolver un conjunto de datos de pares (K. Seq[V]). Nota: De forma predeterminada, la agrupación utiliza 8 tareas paralelas. Puede pasar el parámetro opcional numTask para establecer un número diferente de tareas según la cantidad de datos

reduceByKey(func, [numTasks]): en (K). , V ) Llamar a esta función en un conjunto de datos devolverá un conjunto de datos que consta de pares (K, V). Estos conjuntos de datos tienen el mismo valor clave y se agregan utilizando la función de reducción especificada. Similar a groupbykey, la cantidad de tareas se puede configurar mediante el segundo parámetro opcional.

join(otherDataset, [numTasks]):

Llamado a conjuntos de datos de tipo (K, V) y (K, W) para devolver (K, (V, W)) Un conjunto de datos de pares donde se agregan todos los elementos de cada clave

groupWith( otherDataset, [numTasks]): en tipos (K, V) y (K, W) Llamar a esta operación en un conjunto de datos devolverá un conjunto de datos cuyos elementos son (K, Seq[V], Seq[W]) tuplas: producto cartesiano. Sin embargo, cuando se llama a los conjuntos de datos T y U, devuelve un conjunto de datos que consta de pares (T, U) donde todos los elementos interactúan con elementos del producto cartesiano.

flatMap(func):

Similar a map, pero para cada elemento de entrada, asigna múltiples elementos de salida a 0 (por lo que el valor de retorno de la función func es Seq, en lugar de que un solo elemento)

Operaciones específicas

reducir(func): agrega todos los elementos en el conjunto de datos a través de la función func. La función func toma 2 parámetros y devuelve un valor. Esta función debe ser una función asociada para garantizar una ejecución simultánea correcta.

collect(): devuelve todos los elementos del conjunto de datos como una matriz en el controlador. Generalmente se usa después de usar filtros u otras operaciones para devolver un subconjunto de datos lo suficientemente pequeño para ser usado nuevamente. Devolver directamente una recopilación de todo el conjunto RDD puede hacer que el controlador OOM

count(): devuelva una recopilación de los elementos en el conjunto de datos Número

take(n): Devuelve una matriz que consta de los primeros n elementos del conjunto de datos. Tenga en cuenta que esta operación actualmente no se realiza en paralelo en varios nodos, sino en la máquina donde está el controlador, con todos los elementos calculados en una sola máquina (la presión de la memoria en Gateway aumentará, así que úsela con precaución)

first(): devuelve el primer elemento del conjunto de datos (similar a take(1))

saveAsTextFile (ruta): Spark llamará al método toString para cada elemento y lo convertirá en una línea de texto. en el archivo

saveAsSequenceFile(ruta): los elementos del RDD deben estar compuestos por pares clave-valor y todos implementar la interfaz Writable de Hadoop, o convertirse implícitamente a Writable (Spark incluye soporte para Int, Double , String y otros tipos básicos)

foreach(func): Esto generalmente se usa para actualizar variables del acumulador o interactuar con sistemas de almacenamiento externos