Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo programar hadoop

Cómo programar hadoop

MR personalizado implementa la siguiente lógica

product_no lac_id moment start_time user_id County_id Staytime city_id13429100031 22554 8 2013-03-11 08:55:.19.151754088 571 571 282 571

13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571

13429100082 22691 8 2013-03-11 08:56:.37.149593624 571 571 103 571

13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571

13429100087 22540 8 2013-03-11 08:55: 2013-03-11 08 : 56:51.45.150276800 571 571 66 571

13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571

13429100140 26642 9 2013-03-11 09:0 :.19.151754088 571 571 18 571

13429100082 22691 8 2013-03-11 08:57:32.151754088 571 571 287 571

13429100189 22558 8 2013-03-11 08:56: .2 4.139539816 571 571 48 571

13429100349 22503 8 2013-03-11 08: 54: 30.152622440 571 571 511 211 5711234567891011

Explicación de campo:?

Producto: el usuario móvil del usuario número de teléfono ?

lac_id: la estación base del usuario ?

start_time: la hora de inicio del usuario en esta estación base;?

tiempo de permanencia: ¿el tiempo de permanencia del usuario en esta estación base?

Requisitos: ?

Comprender la ubicación actual del usuario según lac_id y start_time, y aprender en función on Staytime El tiempo de permanencia del usuario en cada estación base. La ubicación del usuario se puede conocer en función de la trayectoria.

De acuerdo con la trayectoria y el tiempo de permanencia de estaciones base consecutivas, finalmente podemos obtener el tiempo que cada usuario permanece en cada estación base en orden cronológico.

Ejemplo de resultado esperado:

13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571

13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 390 571

13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571

13429100087 2705 8 2013-03-11 08: 56: 51.139539816 571 571 220 571

13429100087 22540 8 2013-03-11 08: 55: 45.150276800 571 571 66 57112345

Analizar los resultados anteriores :? > La primera columna está en orden ascendente y la cuarta columna está en orden descendente por tiempo. Por lo tanto, primero debe extraer estas dos columnas y luego personalizar la clasificación.

La implementación específica es la siguiente:

paquete FindFriend; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; URI URI; importar java.net.URISyntaxException; importar java.util.regex.Matcher; importar org.apache.hadoop.Pattern; .util.regex.Matcher; importar java.net.URISyntaxException; importar java.net.URISyntaxException; util.regex .Pattern.FileOutputFormat;public class StringComp2 {

* Este método se llama cuando se ordena k2.

* Cuando la primera columna es diferente, ordena en orden ascendente; cuando la primera columna es igual, ordena la segunda columna en orden descendente

*/

@Override

public int compareTo(NewK2 o) { final int menos = compTo(this.first,o.first ); >} return -compTo (this.segundo,o.segundo);

}

}

// Descubrí que no puedo obtener lo que quiero usando directamente el método compareTo de la clase String Result (primera columna ascendente, segunda columna descendente).

public int compTo(String one,String otro) { int len ​​​​= one.length(); char[] v1 = one.toCharArray() char[] v2 = another.toCharArray(); ; int k = 0; mientras (k < len) { char c1 = v1[k]; char c2 = v2[k];

k++;

} return 0;

}@Override

public int hashCode() { return this.first.hashCode( )+ this.@Override

público booleano es igual (Objeto obj) { if(! (obj instancia de NewK2)){ return false;

}

NewK2 oK2 = (NuevoK2)obj; return (this.first==oK2.first)&&(this.segundo==oK2.segundo);

}

} ?? 6 4656667686970717273747576777879808182838485868788899091929394 95969798991001011021031041051061071081091101111121131141151 161 1711811912012112212312412512612712812913013113213313413513613 713813914014114214314414514614714814915015115215315415515 61571 58159160161162

Resultados de ejecución:?