Clasificación de los operadores de chispa
Desde una perspectiva general, los operadores de chispa pueden dividirse aproximadamente en las siguientes dos categorías:
1) Transformación de transformación/operador de conversión: esta transformación no desencadena la presentación del trabajo y completa el procesamiento intermedio del proceso del trabajo.
Las operaciones de transformación son cálculos retrasados, lo que significa que la operación de conversión para generar otro RDD a partir de una conversión de RDD no se ejecuta de inmediato. Se requiere esperar hasta que esté disponible una operación de acción antes de que se active la operación.
2) Operador de acción de acción: este tipo de operador activará SparkContext para enviar un trabajo de trabajo.
El operador de acción activará el trabajo de envío de chispa (trabajo) y emitirá los datos al sistema Spark.
Desde una pequeña perspectiva, los operadores de chispa pueden dividirse aproximadamente en las siguientes tres categorías:
1) Operador de transformación del tipo de datos de valor. Esta transformación no desencadena la presentación del trabajo. Los elementos de datos procesados son datos de tipo de valor.
2) El operador de transfromation del tipo de datos de valor clave. Esta transformación no desencadena la presentación del trabajo. Los elementos de datos para el procesamiento son pares de datos de valor clave.
3) Operador de acción, este tipo de operador activará SparkContext para enviar un trabajo de trabajo.
introducción
Por lo general, es más conveniente escribir programas Spark con Scala, después de todo, el código fuente de Spark está escrito en Scala. Sin embargo, hay muchos desarrolladores de Java en la actualidad, especialmente cuando el acoplamiento de datos y los servicios en línea. En este momento, debe dominar algunos métodos para usar Spark en Java.
1. Mapa
El mapa no se puede usar con más frecuencia al procesar y convertir datos
Antes de usar MAP, primero debe definir un formato de función transformada de la siguiente manera:
Function <string, etiquetedPoint> transform = new function <string, etiquetedPoint> () {// string es el tipo de entrada de una determinada línea etiquetedPoint es el tipo de salida convertido @Override public etiquetado y call (string fila) lanza la excepción {// reescribe el método de llamada string [] rowarr = fila.split (","); int showsize = rowarr.length; double [] doubleArr = new Double [showsize-1]; // Excepto por el primer Lable, el resto de la pieza se analiza en un doble y se pone en la matriz para (int i = 1; i <showsize; i ++) {string cada = rowarr [i]; DoubleArr [i] = double.parsedOuble (cada uno); } // Convierta los datos que acaba de obtener en una función vectorial Vector = vectors.dense (doubleArr); doble etiqueta = double.parsedubo (rowarr [0]); // Construye el formato de datos para la clasificación Training LabelPoint LaboredPoint Point = New LaboredPoint (etiqueta, función); punto de retorno; }};Se debe prestar especial atención a:
1. La entrada del método de llamada debe ser el tipo de la fila de datos antes de la conversión. El valor de retorno debe ser el tipo de la fila de datos después del procesamiento.
2. Si se llama a una clase personalizada en el método de conversión, tenga en cuenta que el nombre de la clase debe ser serializado, por ejemplo
Public Class Treeensemble implementa serializable {}3. Si se llaman a algunos objetos de clase en la función de conversión, como el método debe llamar a un parámetro externo, o un modelo de procesamiento numérico (estandarización, normalización, etc.), el objeto debe declararse final.
Luego llame a la función de conversión cuando sea apropiado
Javardd <LabeledPoint> rdd = oridata.tojavardd (). Map (transformación);
Este método requiere la conversión de RDD ordinario a Javardd para usar. La operación de convertir a Javardd no lleva mucho tiempo, así que no se preocupe
2. Filtrar
También se usa muy comúnmente en escenarios como evitar valores nulos de datos y 0s, y puede cumplir con las funciones de dónde en SQL
En primer lugar, necesitamos definir una función. El efecto real de devolver un valor booleano dado una línea de datos es retener los datos devueltos a verdadero.
Function <string, boolean> boolfilter = new function <string, boolean> () {// string es el tipo de entrada de una línea determinada. Boolean es el tipo de salida correspondiente. Utilizado para determinar si los datos se conservan. @Override public boolean llamada (string fila) lanza la excepción {// Reescribe el método de llamada Boolean Flag = Row! = NULL; Bandera de regreso; }};Por lo general, lo que debe modificarse en el uso real de esta función es solo el tipo de fila, es decir, el tipo de entrada de la fila de datos. A diferencia de la función de conversión anterior, el valor de retorno de este método de llamada debe solucionarse como booleano.
Entonces el método de llamada
Javardd <LabeledPoint> rdd = oridata.tojavardd (). Filter (Boolfilter);
3. Maptopair
Este método es algo similar al método del mapa, y también realiza algunas conversiones a los datos. Sin embargo, la salida de esta función es una línea de entrada de tupla. El método más utilizado es hacer la validación cruzada o el cálculo de la tasa de error estadística AUC, etc.
Del mismo modo, primero debe definir una función de conversión
Function <string, boolean> transformer = new Parfunction <LabeledPoint, Object, Object> () {// LaboredPoint es los dos objetos después del tipo de entrada. No cambie @Override public Tuple2 Call (LaboredPoint Row) lanza la excepción {// Reescribe el método de llamada generalmente solo cambia los parámetros de entrada y la salida. No cambie doble predicton = thisModel.Predict (Row.Feature ()); doble etiqueta = row.label (); devolver nuevo Tuple2 (predicton, etiqueta); }});Con respecto a la clase de llamadas y el objeto de clase, los requisitos son consistentes con el anterior. La clase debe ser serializada, y el objeto de clase debe declararse como tipo final
Las llamadas correspondientes son las siguientes:
Javapairrdd <Object, Object> PredicionsandLabels = oridata.maptoPair (transformador);
Luego, para el uso de predicciones y las habilidades, calcule la precisión, el recuerdo, la precisión y el AUC. Habrá en el próximo blog. Estén atentos.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.