9:39
2024-05-29 10:14:10
4:49
2024-05-29 10:29:56
5:42
2024-05-29 10:36:28
2:45
2024-05-29 10:43:46
1:00:16
2024-05-29 10:48:22
3:26
2024-05-29 12:18:04
5:22
2024-05-29 12:24:11
1:43
2024-05-29 12:33:10
55:30
2024-05-29 12:36:17
47:02
2024-05-29 14:57:58
2:18:28
2024-05-30 09:31:42
32:39
2024-05-30 13:09:57
24:21
2024-05-30 15:06:50
18:09
2024-05-30 15:44:33
3:56:30
2024-05-31 09:51:34
4:23:53
2024-06-05 09:12:19
28:23
2024-06-06 10:52:48
12:29
2024-06-06 11:32:59
3:47
2024-06-06 11:48:14
1:36
2024-06-06 12:03:40
54:36
2024-06-06 12:09:30
1:24:03
2024-06-06 13:32:03
13:43
2024-06-06 15:42:24
18:06
2024-06-07 09:07:48
9:43
2024-06-07 09:33:41
2:49:27
2024-06-07 09:49:42
3:47
2024-06-11 09:19:48
5:51
2024-06-11 09:25:13
1:53
2024-06-11 10:21:33
7:58
2024-06-11 10:26:29
2:48
2024-06-11 13:27:27
43:31
2024-06-11 13:50:56
2:46:00
2024-06-12 09:14:49
20:20
2024-06-12 13:22:18
29:54
2024-06-12 15:00:28
WEBVTT--> Descargar objeto haduto. Job, descargar objeto haduto. Job, descargar objeto haduto. Por favor, --> si deseas, copia las conexiones que te han funcionado. Yo voy a conectarme con este --> señor que está acá, voy a copiarlo y lo voy a pegar aquí, porque sé que esa conexión ya la --> tengo bien. Ahora el siguiente ejemplo, vamos a hacer un tipo de conexión diferente que es --> más estática, pero cualquiera de las dos es viable. Y aquí vamos a usar un componente que --> se llama THDFS, THDFS, HDFS, GET, exactamente el GET. Seguidamente pues ya empieza a ser de --> memoria, empieza a coger la conexión existente. Por defecto no escoge como el caso de S3 que --> por defecto una, hay que seleccionarla. Especifica el directorio en el cual deseas buscar el --> archivo que vas a descargar y acto seguido define el directorio donde se van a leer los --> soquetos, perdón, donde se van a descargar los soquetos. Entonces ya tenemos una ruta que se --> llama context, control espacio. Qué pena, aquí hay que descargar, siempre se me olvida, --> hay que importar el context. Importemos el contexto. Listo, entonces ahora sí voy --> aquí al HDFS GET y le digo context ruta. Debería estar apuntando hacia Cuba. Acto seguido, --> entonces hay algunos que no tienen, vamos a descargar el archivo sensus que tenemos allá, --> sensus.csv. Algunos me preguntaron ayer si es sensible a mayúsculo y minúsculo, --> depende de dónde estés. Si el archivo de entrada está en Windows no hay problema, --> pero si el archivo de entrada está en Linux, sí hay que colocarlo exactamente como esté. --> Y como tenemos ya un sensus, cambia el nombre de este lado y lo vas a llamar sensus --> underscore copia.csv. Perdón aquí. Mira los pasos, primero copié la conexión que tenía --> que funcionar de otro job. Segundo, importa el contexto. Tercero, agrega un componente tipo --> HDFS GET, configura la conexión existente y ahora configura las carpetas de entrada y de --> salida. Veo para ver cómo están acá ustedes porque de pronto nos hemos atrasado algunos, --> se voy a esperar. De todos modos, voy a ejecutar por si acaso tengo algún error --> y no sé si está ejecutando descargar objetos. Listo, por favor, claro como no, --> descargar. En primer lugar, copiate la conexión, ¿verdad? Y ahora la configuración de este --> señor es así. Listo, ya ejecutó. Te muestro un momento la configuración. --> Aquí la tengo. De todos modos, verifico con Horicio si es la que tienes. Vamos a ver si --> está bien sensus.csv. Y acá el mismo nombre pero agregas underscore copia. --> Debió quedar en la carpeta cua mía que está en temporal. --> Y efectivamente aquí tengo la descarga de la copia. --> No, está pixelado. Ok, de pronto, es que para acá está acelerando y hace cuando llueve --> como que le da miedo la conexión y se desestabiliza. Bueno, no sé si alguno tuvo --> un error para la descarga. Claro, como no, aquí la tienes. Primero configuras la carpeta --> que tenemos solamente una que es AXA. Después lo, después que importate el contexto lo mandas --> a contest.ruta y especificas primero el archivo que vas a cargar de Hadoop y segundo el nombre --> con que va a quedar en el destino que lo coloque sensus copia. No sé si alguno tuvo --> error. Horicio, te descargo que tengo como un algo rojo ahí para ver. Listo porque claro, --> lo que pasa es que mira lo siguiente. Ahí si tú quieres sobrescribes el nombre, --> si quieres sobrescribe, pero para comprobar mejor déjalo create, por favor déjalo create para --> comprobar y cambia el nombre destino sensus underscore copia. No, ese es el origen, --> el destino es este, ese es el destino. Ponle underscore copia ssv y vuelve a ejecutar. Listo, --> ejecuta nuevamente y deberías no tener problemas. Claro, y como estaba la opción create y no --> sobrescribir entonces iba a salir ese error. Se intentó crear, no sobrescribirlo y ya estaba --> listo. Listo, perfecto. Listo, bueno, entonces creo que todo nos funcionó. Sigamos entonces. --> Aquí ya viene un poco lo que es la magia de la herramienta. Ya aquí vamos a empezar a --> definir y a entender cómo va a procesar esta parte convictada. Es decir, esta parte de --> desarmacenamiento ahora viene la parte de procesamiento. Entonces vamos aquí a lo --> siguiente. Vamos a darle click derecho, create job y vamos a terminar con este job que se --> llama job, leer, datos, objeto. Leer, datos, objeto. Vamos a darle aquí finish y aquí sí vamos --> a ir un poco más lento. Por favor, copia la conexión. Copia la conexión de alguno que te --> funcione ya. O hagámoslo, perdón, hagámos esto diferente para matarlo. Hagámoslo --> diferente para matar enseguida esta parte de configuración. Estas configuraciones que --> hemos hecho son dinámicas. Vamos a hacer una configuración de metadata. A ver cuál le --> gusta más. El problema de metadata es que no puedo usar contextos. Entonces vamos a lo --> siguiente. Váyase a su metadata y busca una opción que dice Hadoop Cluster. Metadata, --> Hadoop Cluster. Dale click derecho y de la opción crear Hadoop Cluster. Entonces vamos a --> llamarlo Hadoop. Solamente Hadoop. No configuramos más nada. Le damos, dígame, sí. Listo, --> en su metadata, por favor, abra el árbol de metadata y busque la opción que dice Hadoop --> Cluster. Le da a crear conexión y la vamos a llamar Hadoop, por favor. Vamos a darle aquí next. --> Y aquí te pregunta sobre qué distribución te vas a conectar. En este caso no tenemos --> una específica. Es una, digamos, es una customizable que hacemos nosotros. Ya si te vas --> a conectar, por ejemplo, al cluster que tiene Amazon, pues usa Amazon MR. Aquí vamos a buscar la --> conexión que dice Universal. Y por favor, asegúrate que la versión, porque este es compatible --> con versión 3.0. Que mi cálculo no me falle. Dale por favor Finish 3.0x. Y aquí yo no sé --> por qué me apareció nuevamente. Bueno, acá me pareció Amazon. Asegúrate, no sé por qué, --> si apareció Universal, versión 3.0, por favor. Sin la distribución, si te apareció, porque escogía --> Amazon y me apareció algo diferente acá. Entonces, aquí viene un poco lo engorroso y lo poco --> flexible que puede haber. Donde dice localhost, vamos a cambiar por la dirección IP que tenemos --> de la máquina que tiene el Hadoop. Quiere decir entonces que el localhost lo voy a cambiar por, --> voy a quitar toda la parte del localhost y va a colocar 10.0.3.250. Esta misma dirección la --> repito y reemplazo donde está el localhost. Se cuenta que es menos flexible porque aquí no --> se puede usar contextos. Nuevamente, los puertos quedan, el puerto, por favor, qué pena. En el --> 8020, el puerto que está escuchando esta versión es nueve mil, cambia el 8020 por nueve --> mil, qué pena. Los demás puertos quedan igual. Gracias. --> A muestro para ver quién me mencionó por ahí. Bueno, Julio, voy contigo un momento a ver. Estoy --> en tu máquina, a ver, vamos a lo siguiente. Sí, está bien ahí, está bien ahí, está bien ahí. --> El resource, agrégale dos puntos y sería 8030 en el que estás actualmente. Y en el de arriba --> es 8032. Donde dice Stringing Directory, por favor, cambia user a AXA, que es el directorio que --> tenemos. Y por último, donde dice username, más abajo, donde dice Authentication, por favor, --> dele hdud. H-dub. Acá abajito, donde dice Authentication, abajito de carveros, donde dice --> Authenticated Rocker Verus. Voy contigo, Julio, para ver si es. H-dub. Listo. Vamos a chequear --> los servicios, dere click ahí en chequear servicios. Le va a descargar unos componentes. --> Y debería aparecer en verde. Veamos para ver, diciendo que la conexión. El botoncito más --> abajo, donde locates el usuario. Baja, baja, baja, listo. Ah, listo, un momento ya veo para ver. --> Si lo tiene o lo tiene desactivado, está acá abajo. Si lo viste, lo tienes abajo. Sube, --> sube, sube para ver. Ahí que te faltó. Sube. La pregunta es por qué lo tiene desactivado. --> Se te debió. Bórrate la autenticación un momento. Un momento, un momento. Aquí dice --> que tienes un problema con tu resource manager. Un momentito, resource manager. Dice, ah, listo, --> porque qué pena. Esos resource managers no llevan HDFS, nada más lleva la IP. O sea, borra desde, --> deja nada más desde la IP y los slams los borra también. Bórrate ahí y borrate el otro. --> Al debajo, al debajo, al debajo. Qué pena, al debajo. El debajo. Listo, dale cheque service, --> ya está desactivado. Ahí lo tienes, el botón abajito, lo tienes. Cheque service, --> eso te activó. Acá abajo. Mira acá bajito. No, allá no, en la barra no. Baja acá. Ahí están los --> botones finish. Acá bajitos. No sé si alcanzas. Listo, cheque. Listo. Descarga, por favor. --> Vamos a ver. Listo. Close. Tienes rojo. Vamos a close un momento y voy a ver qué pasó. --> Vete a ver tu configuración nuevamente para ver. Sube, sube, sube para ver. Voy a mostrar --> aquí la de julio para ver. Y la comparo con la mía. No sé, esta es la de julio que salió --> por error. Bueno, tienes HDFS, dos puntos, diez puntos, tres puntos, dos puntos, ochenta, --> treinta y dos. AXA. Si tienes, no tienes algún punticón por ahí, no. No, vamos a ver entonces. --> Permítanme, yo, déjenme, permítanme, yo la controlo para ver la máquina y veo para ver. --> Julio, vamos por aquí. Aperto un momento que tengo que ser interactivo. Vamos a ver. Voy a repetir --> nuevamente para ver el log aquí que dice. Dice causado conexión refutada, no hay información. --> A ver si me equivoqué en los puertos. ¿Cuál? ¿Diez punto qué? ¿Punto veinte? No, está bien, --> ese está en cien. Diez punto tres punto cincuenta dice que no hay conexión. Ahora vamos a ver si --> aquí de pronto hay un, no lo alcanzamos a ver. No, esa conexión está bien. Diez punto cero --> punto tres cincuenta. Esta que está aquí. Vamos a ver. Y esta que está aquí que es la --> que está conectando. Sí, esto está bien. Tienes AXA, tienes HEDUT, a menos que tengas alguna --> configuración especial que no vi. No, esto no tiene nada que ver, pero vamos a ver un momento. --> Aunque no, porque no, este no, porque en un momento, aunque el usuario es HEDUT, --> yo habilité para que te pudiese conectar con cualquier usuario. Y tiene arriba los servicios, --> ¿no? Porque que la otra sería si lo tienes arriba. No les sabría decir qué pasó aquí, --> por qué no lo conectas, por qué no se conecta. ¿Quién tuvo también otro error de pronto al --> ver con otra persona que tenga otro error, alguien mío que tampoco pudo conectarles al rojo. --> Vamos a un momento, anda un momento, para ver si de pronto viendo el tuyo puedo ver. --> Ah no, pero aquí listo. En realidad yo a ese usuario le quité esa parte para quitar la --> validación de usuario. Lo que hace es que si no coloco usuario no va a ser, no, no, --> solamente cambia de user a AXA, por favor, en el Staging. Ese es un área que es un área donde --> él va a hacer operaciones temporales. Recuerda que yo le dije que Max HEDUT lo que hace es --> que cuando procesa guarda datos en disco. Entonces esa carpeta que está ahí, la carpeta --> de Staging. Bueno, a ti se salió un momento y por qué a let close. Voy con otro, --> porque aquí este salió. Voy con otro, por favor, dale finish, por favor. ¿Quién otro --> no le funcionó, por favor? Sí, sale en verde. ¿Quién más? Eduardo, voy contigo. Un momento, --> hay para ver. Eduardo, voy contigo a ver un momento. Ya voy con ¿Quién más? Vamos a ver, --> Eduardo, si sale el mismo error. Bueno, aquí parece ser que... Sí, esa es una. Esa es --> la que te cambió ahora. ¿Cambia los localhosts por IP? Listo, cambia el localhosts por la IP 10.2, --> porque te cambia. Sí, debió, pero la herramienta tiene un pequeño bocado ahí. ¿Cambia el --> localhosts por la dirección? 10.10, creo que tienes el memoria, pégala ahí y cambia --> 9.000. Ahora, si cambia todos los localhosts que tenga, cambia el sign-in a AXA, dale check --> service. Ya lo tienes listo ahí. Descarga, por favor. Listo, close. Finish. ¿Quién más no le --> funciona? ¿Qué le funcionó? Aparte de Julio, pues. Alguien me decía. Julio, voy contigo --> nuevamente a ver si capturamos. Yo tu pantalla en blanco. Listo, un momento. Ya que hay check --> service, a ver. Bueno, Julio, hagamos lo siguiente. Permítame, vamos a hacer una --> nueva. Vamos a empezar a hacerlo. Porque no sé qué pasó ahí. Listo, crea la conexión. Este señor le --> da lo mismo lo que escojo aquí porque al fin y al cabo me cambia la configuración. Le voy a --> dar finish aquí. Listo, voy a cambiar aquí a universal. Escojo 3.0 y voy a cambiar entonces --> toda esta parte por 10.0.3.250. Sería la dirección 2.9 mil, que es el puerto que está escuchando. --> Tomo esta IP y la voy a reemplazar por cada uno de los puntos. Este sería así y esta sería así. --> Listo, le digo que la zona de tagging para hacer operaciones es AXA. Y si no coloco nada aquí, --> no me habilito. Voy a colocar por defecto aquí H2. No sé si hay algún espacio en blanco ahí, --> Julio. No sé si de pronto había algo que impedía hacer eso. Voy nuevamente a mi máquina. --> Sí, sí. Lo que hace es que yo deshabilité la opción de seguridad de H2, si me entiendes. --> Estamos en un plano académico, no voy a habilitarme a complicarme la vida con eso. --> Listo, aquí voy a mostrar mi máquina. Le doy finish aquí. Expande aquí, le da click derecho, --> click derecho donde el Hadoop que le creó aquí, click derecho, y le vuelve a decir que va a --> dar un HDFS. HDFS. Llámelo entonces HDFS. Si te quieres llámelo HDFS AXA. Como usted --> quiera llamarlo. Next. No hace más nada aquí, le da finish. Y debería aparecer si expande el --> árbol esta parte, dígame, en el que creo. No, acá, la que hice. Váyase a su árbol del --> metadata, expanda el árbol, expanda el árbol ese de Hadoop, expandalo. Listo, a ese Hadoop que --> tiene ahí, que fue la conexión que hizo ahora, le da click derecho. Y dígale que sobre ese Hadoop va a --> crear un sistema de fichieros de conexión, ese que está ahí. HDFS. Listo. Llámelo, --> yo lo llamé HDFS, donde le colapsa, le le next y no hace más nada y le da finish ahí. --> Listo. Ahora, mire cómo cambia ahora. Son dos formas de conexión. Una conexión que dice netamente --> dinámica y esta conexión que está netamente estática. ¿Cuál es el inconveniente? Pues --> la dinámica. La dinámica es que cada vez que agregues, toca configurar el contexto, --> ¿cierto? Pero tienes flexibilidad, puedes cambiar el contexto y la IP te cambia, --> pues cambias el contexto a la IP y listo, te funcionan todos si la IP cambia. En este --> caso, en particular, pues la ventaja que tengo con una metadata, que nada más la --> configura una vez, la desventaja es que si me cambia la configuración del Hadoop, --> me toca configurar, cambiar la configuración de metadata. Y entonces, ahora ¿cómo haces? --> Váyase ahora a HDFS Connection, por favor. Sí, estamos en, perdón, que pena, que pena, --> vamos a, estamos en leer datos, que pena, vamos a leer datos. Primero, el contexto, --> vamos a importar los contextos entonces, por si vamos a usar algo, en leer datos, --> que pena, gracias por la observación. Voy a cerrar los demás elementos. Pero mire, --> ¿cómo voy a usar la conexión nueva que tengo? Voy a colocar aquí un Tepreyoc ya --> por costumbre, aquí Tepreyoc. Y de todos modos, voy a agregar un objeto de tipo T HDFS Connection, --> que lo necesito. Conecta, por favor, el Tepreyoc con el HDFS Connection. Conecte el --> diferente, vamos a usar el metadata que creamos de Hadoop. Expanda, por favor, --> la configuración del HDFS Connection. Sí, en el de leer, estamos en el de leer datos, --> en el Joke leer datos, ok. Si es nuevo, importe los contextos por si acaso. Estando --> en la configuración del HDFS Connection, mire lo que va a hacer ahora. Donde dice --> property tight, no vamos a construir la conexión, sino vamos a usar una que --> tiene metadata. Para eso, dele click en el combo boss y escoja la opción repositorio. --> Repositorio. En el HDFS Connection, escoja camie de build a property y escoja la opción --> repositorio. Acto seguido, le va a expandir un text file con un botón, dele click en el --> botón. Está demorando para abrir, pero abre ahí. Y expanda Hadoop, le va a decir la conexión y --> la conexión al HDFS que tiene ahí. Por favor, expanda el HDFS y escoja el AXA, --> el HDFS AXA que usted tuvo, el que creamos al final. Y le da ok. --> Entonces, él toma la configuración de ese señor que está allá. Dese cuenta que --> automáticamente le agregó la dirección y el puerto por donde se va a conectar. --> Son dos formas de hacer lo mismo, cada uno con ventajas y desventajas. Ya usted --> anotará, dependiendo del contexto de su problema, cómo hace para conectarse. --> Ya lo demás, sí, dígame. Sí, señor, sí, señor. Pero lo que pasa es que después pierdo --> flexibilidad si me cambia la IP, cierto. Puedo tener un problema ahí. Listo, vamos entonces --> a lo siguiente. Ahora, este componente sí es sumamente importante porque este componente --> ahora sí me va a permitir hacer lo que creemos que es procesar. Ojo, lo siguiente, --> los ejemplos que hemos venido haciendo de Hadoop solamente hemos ocupado la parte --> de almacenamiento. Ahora vamos a hacer cómo hacemos para procesar. Entonces, --> para procesar vamos a hacer lo siguiente ahora. Primero vamos a buscar un componente --> que se llama HDFS, HDFS input. Listo. Entonces, ojo a lo siguiente. Esto es --> importante para que entienda lo siguiente. Entendemos las tecnologías ya de lo que es --> Big Data tradicional, cierto. El Big Data tenemos T-PIC, Matreviews y Spark. Son los señores que --> están en el mercado. Hoy en día quien reina es Spark. Entonces, a este componente no tiene, --> esta versión no tiene un componente que se llama T-Spark, pero el que tienes tú --> haya instalado en tu empresa sí lo tiene. Ojo a lo siguiente. Si aquí tengo un componente --> HDFS input y estoy conectado a un clúster de Hadoop, significa que todo lo que conecte yo --> de a partir de esto que está aquí se va a procesar con Big Data. Más específicamente --> Matreviews. Entonces, ¿qué sería? Espérate, te busco aquí un momento algo. Matreviews. --> Un momento para que me entiendan la idea que esto es primordial. Espera un momento, --> un momentito. Google, que lo tenía por aquí. Matreviews. Entonces, un momento y --> encuentro uno más interesante. Yo le había comentado que Matreviews ¿qué es? Es un --> framework para utilizar el clúster que tienes de Hadoop. Entonces, por aquí se me perdió. --> Este que está aquí, esto que está aquí. Al final tú lo que haces con Matreviews es codificar. --> Lo que haces con Spark es codificar. Entonces, mire lo siguiente cómo trabaja la herramienta. --> Esto que está aquí que es un script para cualquier job que puede ser para agrupar, --> sumar o sacar promedio lo que tú quieras. Cuando tú estás en la herramienta, --> esta herramienta trabaja de la siguiente forma. Después de este que se me perdió, --> me perdió, después que yo conecte cualquier componente de aquí para adelante es lo que --> va a hacer es generar un script en Macreviews y lo va a ejecutar contra el clúster de Hadoop --> que tenga. Y ahí es donde está usando el progresamiento a nivel de Big Data. Después --> de ese componente para adelante. Ahora, si yo tengo un componente que es tipo T Spark, --> todos los componentes que conecte yo de ahí hacia adelante van a generar un script en Spark, --> más específicamente en Java y van a ejecutar eso contra el clúster de Spark. Entonces, --> ahora sí vamos entonces a entender la parte de cómo se procesa. Bueno, entenderla a nivel ya --> como caja blanca, caja negra, perdón, como caja negra que lo que está allá abajo es una --> codificación que él genera. Pero al final, cuando yo tengo el T input de ahí para --> adelante, él genera un script en Macreviews para este caso y ahí es que aplica progresamiento --> de Big Data para que entienda esa parte. Pero bueno, vamos entonces a lo siguiente ahora. --> Vamos ahora a revisar por favor y porque es que hay algunos que de pronto no tienen --> algunos archivos, revise por favor su carpeta de de AXA que tenemos en Hadoop y confírmeme --> si tiene demográfico.csv. Si no, lo hacemos con Censo el ejemplito. En el caso tuyo en --> alguien tiene que ir a Browse, acá en Utilidades y vas a Browse the file y ahí te aparecen para --> ver. Creo que todos tenemos Censo, ¿verdad? Si no lo hacemos con Censo. ¿Todos tenemos --> AXA? Creo que no tenemos alguno de demográfico. Entonces voy a hacer el ejemplo con Censo. --> Entonces mira el primer ejemplo que vamos a hacer de procesamiento de Big Data. Listo? --> Si te das cuenta, este job que está aquí va a usar las dos cosas a nivel de tecnologías --> de Hadoop. Va a tomar lo que está almacenado en Hadoop y lo va a procesar entonces con Big --> Data. El ejemplo que quiero hacer es sencillo. Voy a mostrar cómo está configurada esa Censo. --> Listo, voy aquí a editar para que me entienda el ejercicio. Y aquí lo que tiene es un código, --> esto se censó en un país que no recuerdo cuál es, pero entonces aquí lo que me interesa --> para el ejercicio que está el Censo, la cantidad de población de noche. No recuerdo --> bien qué es. Entonces lo que quiero hacer es lo siguiente. Quiero sacar el promedio de --> personas que fueron censadas de noche. Eso es lo que quiero sacar. Te vas a dar cuenta que --> los ejercicios que estamos haciendo son los típicos ejercicios que tú haces normalmente --> a nivel de baseato. Agrupa, suma, sacas promedio porque eso es Big Data. Eso es Big Data. --> Big Data lo que te ayuda es en lo que tú hacías tradicionalmente, Big Data lo colocas --> y te va a mejorar teniendo en cuenta la cantidad de volumen que vas a tener, pues te mejora --> mucha velocidad por la parte del clóster que vamos a tener montado. Pero lo primero --> que vamos a hacer es lo siguiente. Vamos a sacar el promedio de ese campo que se --> llama Census Night Population. Eso es lo que queremos hacer. Listo. Ahora, eso --> de aquí para adelante, o sea, esto que vamos a hacer te funciona con Data Integration. --> La única diferencia que tienes con agregar a esta herramienta el H Input es que de aquí --> para adelante lo vas a ejecutar con clóster a nivel de Big Data. Pero esto que vamos a hacer --> exactamente lo voy a hacer con Data Integration sin Big Data. O sea, con tecnología abro --> comillas doble lo que llaman tradicional. Listo. Entonces, vamos a lo siguiente. Vamos --> al TF Input, por favor, y configuremos la conexión. Entonces decimos igual a los demás, --> le vamos a decir que vamos a hacer una conexión existente. --> Primero, configuremos donde está la opción File Name el archivo de entrada. La ruta del --> archivo sería ¿Cuál? Sería Slash, AXA, ojo que hay alguno que tiene el AXA en --> mayúscula y el Hado está en Linux, lo tonto le hace error. Entonces, ojo con los nombres --> porque aquí es sensible a mayúscula y minúscula porque vamos a hablarlo de Hadoot. Entonces, --> Hadoot está en Linux. Porque si tuviese Hadoot en Windows no hubiese problema. Vamos entonces --> aquí AXA Slash y le digo búscame dentro la carpeta AXA un archivo que se llama --> AXA.com. Census punto C S V, ojo que coincida al nombre. --> Recuerda, sí, usa Hadoot, claro, que acostumbre. Señor, muchas gracias. --> Sí, hay que, porque este por defecto no escoge la conexión, sí señor, así es, muchas gracias. --> Esto sí, perdón, perdón. --> Muestre para ver. Usó ya, usó la conexión existente. Le dió clic aquí en conexión. --> Y por favor aquí, gracias al que ven. Y aquí por favor recuerde coger, porque por --> defecto no escoge aunque haya uno. Normalmente lo que tú tienes a nivel de big data de --> datos para procesar lo tienes en archivos, la mayoría en formato C S V. No significa que no --> puedas guardar en otro formato. Lo que hace es que la herramienta te está limitando un poco porque --> ese texto, es decir, aquí tienes dos tipos de archivos. Un sequence file normalmente es para --> leer los bytes y eso ¿para qué sería? Guardate una imagen en el HDFS y quieres --> procesar esa imagen para convertirla, no sé, los datos en texto usando big data. --> Entonces usa sequence files. Acá text file asume que la entrada que viene de allá es un --> S V que tienes en el HADU. No significa que en el HFS no puedas guardar lo que tú quieras, --> pero la realidad está limitando en esa parte. Entonces hay que comprobar que el archivo que --> está allá en el HADU está separado por punto y coma. Te compruebo. Vamos a ver, está separado --> por. Voy a ver aquí para ver en mi máquina en el Censo. Está separado por coma. Por ende, --> voy a definir que el separador es coma y ese señor tiene un encabezado. Le coloco aquí uno. --> En la versión del. --> Del entre place y demás opciones. Acá tienes pocas. Y aquí puedes escoger el encoding y aquí --> deberías usar UTF-8. Eso es lo que podríamos configurar ahí. Tener en cuenta el separador, --> el carácter y verificar si tenemos un encabezado. Y acto seguido por costumbre --> que estamos manejando y va por nuestro idioma, pues nos acostumbramos a UTF-8. --> Esos datos no hay problema con UTF-8 porque están en inglés, entonces ahí el ISO que tiene por --> defecto. No hay problema con esos datos que vamos a ver ahí. Te la voy a quedar --> viendo. Te la responde la siguiente clase porque en realidad nunca le he probado esa --> opción. Te la voy a quedar viendo y te la responde el martes entonces. Sigo entonces. --> Ya lo que viene es el típico herramienta de TL de aquí para adelante. Ya lo que viene son los --> mismos componentes que viste en el integration. Vamos a agregar unos nuevos que no alcanzamos --> a ver por tiempo ya. Al final, ¿qué me toca hacer a mí? Como quiero sacar el promedio de --> esto, si hacemos esto, que no es SQL, pero yo creo que la mayoría de otra forma está --> muy ligado con SQL. Mira lo siguiente. Al final, me tocaría más o menos, si fuese SQL, --> sería más o menos un SELECT FROM tabla, vamos a sumar el census, GROUP BY esta columna y acá --> puedo decirle, mire, mire acá, muéstrame, entonces, sácame el promedio AVG de este --> señor que está acá. Eso sería a nivel de SQL. En este caso, es más, perdón, este GROUP BY no --> es necesario, qué pena, porque quiero sacar el promedio completo. O sea, en este caso el GROUP --> BY es implícito, toda la tabla. Esto es lo que tengo que hacer a nivel de SQL. Es decir, --> me toca agrupar como tab, ¿cierto? Para hacer una operación de GROUP. Entonces, --> en el caso particular de la herramienta que toda la gente tiene, la herramienta tiene --> lo siguiente. Busque un componente que se llama T-Aggregated Row, agregated, --> agregated, que significa como agrupar en inglés, ¿cierto? E inicialmente voy a mandar esto a un --> T-Lock. Simplemente voy a empezar con un T-Lock aquí, T-Lock, T-Lock Row, para ver el dato que --> nada más. Nuevamente repito, todo lo que conecte del T-HDF input hacia allá, va a generar un --> strict y lo va a progresar convictado. Simplemente eso. Eso es, digamos que ahí está, erradica --> el, digamos que la ventaja de la herramienta. Eso es. Lo demás es la típica herramienta de --> T-Lock que ya usted conoce. Entonces, conecto este HDF input con este T-Aggregated Main, --> pero aquí hay un pequeño inconveniente que me toca solucionar, que es que no tengo el modelo --> de entrada del archivo. Mira lo siguiente acá. --> El esquema del modelo de datos no lo tengo. Tiene dos opciones. Una opción es que te desgaste --> haciéndole de forma manual, con los nombres que tú quieras, los tipos que tú quieras, --> o la otra forma que me parece la más sencilla, la siguiente. Es la que te recomendaría. --> ¿Qué haces? Lo siguiente. Este archivo en la vida real, el archivo de entrada en la --> vida real puede ser mucho más grande. Un momento que no alcanzó a ver. --> Este archivo que se llama Census en la vida real va a ser más grande. Entonces, --> ¿Qué te recomendaría que hiciera? Mira, bueno, lo que he hecho yo en algunos casos. Le doy, --> edito la fuente del archivo y como el archivo es muy grande y si es muy grande puede que --> mucho tiempo nada más copio las dos líneas. Las dos líneas o tres líneas, no sé, --> pocas líneas copio. En este caso cogí tres líneas. Control C y creo aquí, --> bueno, en cualquier ubicación creo un nuevo archivo con esas tres líneas. ¿Por qué? Porque --> la idea es que no me lea la cantidad de datos que pueda tener ese archivo y se puede demorar --> mucho tiempo para hacer lo que quiero. Entonces, nada más copio porque al fin y al cabo lo que --> me interesa es la metadata. O sea, metadata técnico de los nombres de la columna y quizás --> que me puede identificar los tipos. Guardo a este señor. Safe. Bueno, aquí lo guardo. --> Bueno, aquí me lo guardo con el mismo nombre. Voy a cambiar aquí el nombre. --> Clip derecho, rename y le voy a llamar census metadata, under score metadata. --> Y tengo por defecto, bueno, la herramienta, este es un archivo CSV, pero la herramienta por --> defecto busca CSV, pero tú puedes leer independiente de la extensión porque lo que --> importa es el contenido. Si quieres cambiarle la extensión porque por defecto lo coloca --> .txt Creo que la mejor opción es la siguiente. Simplemente te vas acá y abres una shell en esta --> ubicación. Te subes acá en la barra de elecciones y escribes CMD para que te haga una shell CMD en --> esa ubicación. Y le das el comando Ren. Le das C que empieza a tap y busca el census --> copia. Ah, no, pero me lo generó .csvb. Ah, no, perdón, es que se llama census metadata. --> Un momento que se me perdió aquí algo y fue el archivo donde me lo creó. Yo no había --> guardado este archivo aquí. Perdón, qué pena. El archivo que había creado con las --> líneas, no me lo agrego aquí. Vamos a ver, clic derecho, new file de tipo text. Sí, sí. ¿Y dónde me lo guardo? --> Census metadata. Ahí está. Qué pena, ahí está. Ya estoy mal de la vista hoy. Bueno, voy a abrir --> aquí entonces. Vas aquí y le dices buscas lo que empiece por C. Perdón, census. Aquí lo --> tengo metadata. Esto viene, se copió Microsoft de Linux y le das el nombre nuevamente como tú --> quieras. Si tú quieres, busca census metadata nuevamente para que cambiar, tener que no --> copiar todo el nombre completo y le colocas aquí CSV. Y él te lo. Ah, pero que si a --> veces este Windows tiene una característica. Tienes que configurarlo para eso. Mira lo --> siguiente. Vamos a, vamos a mostrarte, hazlo tú, es más, hazlo tú un momento y yo te digo que --> de pronto va a decirle sale. Porque este Windows a veces depende de cómo lo configures. ¿Quién me --> habló? Julio, ¿Verdad? Momento, Julio, y me conecto entonces. Veo para ver tú, tu pantalla. --> Listo, haz lo siguiente. Ahí la, vete, vete un momento. Abre una shell, por favor, ahí. --> En esa ubicación, abre una shell. No te preocupes. Abre una shell. Quieres darle --> CMD ahí, CMD. Escribe CMD, escribe CMD, CMD. Se fue. Escribe, bueno, no, pero ahí mismo, --> para que te abriera esa ubicación. Mira, mira, vete a Prodativo nuevamente, --> vete a Prodativo. Se selecciona toda la ruta. Sí, selecciona toda la ruta, selecciona toda la --> ruta. Escribe CMD ahí, CMD. C, enter. Y te abre una shell en esa ruta. Ahí está la ruta. --> Ahora dale dir. Dale dir ahí. Enter. Mira que el archivo lo tiene. .cswe.txt. Dale Ren ahí, Ren. --> Sen, busca, escribe C. Bueno, ahí lo es. Si tú quieres, bueno, copió. Si quiere, da tap para que --> te busque todo lo que empiecen por C y dale tap hasta que encuentren el que buscas. Ahí lo está. --> Espacio ahora, dale espacio. Busca nuevamente lo que empiecen por C y busca metadata nuevamente --> y le quitas el txt. Dale tap, tap. Quítale el txt ahí y dale enter. Dale dir ahora. --> Ahí está. Lo que pasa es que ese es el problema de Windows, que normalmente me toca configurarlo --> para que me pueda cambiar la extensión justamente cuando tenga ahí. Sí. Esas, --> esa es otra, sí. Porque por defecto me guarda con txt ese señor. Esa es otra. --> Comilla doble todos los, esa también es otra. Otra forma. Muchas gracias por el aporte, --> se me ha escapado también esa. Bueno, vamos entonces, ¿qué hacemos ahora? --> Ese es el truco nada más para no tener que copiar todo ese esquema de metadata como tal. --> Vamos nuevamente entonces a la ventana, listo, que tengo acá del señor Talen, --> tengo aquí. Y voy a crear una metadata con ese archivo que cree nuevo. Entonces, --> voy aquí a delimited, estoy en derecho, crear delimited. Lo voy a llamar census, next. Busco --> el archivo nuevo que genere. Estamos simulando que el archivo original es demasiado grande, --> es claro. Vamos aquí a temporal. QA y escojo census metadata, aquí la tengo. Open. Next. --> El archivo está separado por coma. Voy a decir que es UTF-8, aunque esto no me, --> no tiene nada que ver porque no va a leer desde aquí. Y voy a colocarles que tienen --> cabezado. Saben, por la práctica que hicimos a nivel de un archivo real, --> lo más recomendable es que uses CSV encerrado entre comillas dobles por si acaso tienes --> comillas dobles. En este caso el archivo no lo tienes. Entonces, no nos preocupemos la --> vida por eso. Está, ¿qué pasó aquí? No lo leyó. Vamos a ver qué pasó. Está leyendo, --> vamos a ver. Aquí está, listo, perfecto. Next. Dale atrás y vuelve nuevamente para --> ver qué pasó. Dale atrás, tecla atrás y siguiente para ver. No sé por qué se quedó --> ahí. Me avisa si no. Dale, dale atrás un momento a ver. Ah, no tiene datos. Sí, --> no leí de guardar. Leí de guardar, ¿qué fue? Vamos a darle finish aquí. Sí, --> lo dejamos así porque este archivo no tiene comillas dobles. Ya en la vida práctica --> hay que hacer un digamos que como el caso del ataque de tiburones que eso venía en un --> formato pues muy complicado, ahí lo más recomendable si es de levantar por comillas --> dobles. No sé si alguno tuvo un problema ahí. Bueno, entonces, aquí lo que hacemos, --> vamos por acá, un momento. Listo, bien. Ya después que hice eso, por favor, --> no que. Vamos a ver. Muestra para ver el preview, para ver. Muestra el preview. Dale atrás un --> momento. Dale atrás, dale atrás un momento. Dale next para ver nuevamente. --> Este error sale en algunos casos y es un bug que puede tener esta versión de esta herramienta --> gratuita. Salte de ahí un momento, dale cancelar. Vuelve a hacer, intenta hacer nuevamente la --> cancelada, intenta nuevamente hacer el procedimiento. Y ahí fue. Dale un momento. Dale, dale --> census nuevamente para ver. Census ahí. Dale next, por favor. Dale, bueno, escoge el archivo. --> Perfecto. Dale next. Vamos a lo siguiente. Acá metele en código a UTF-8 un momento a ver. --> A UTF-8. Por coma. Un momento para ver. Déjame coger un momento tu máquina. Un momento para --> ver. Refresh. Eso es un error ya. Vamos a hacer lo siguiente. Vamos a cambiar de archivo. --> Si no sé si fue que el forma. Vamos a coger el archivo census, que es el original, --> que tampoco tiene muchos datos. Next. Hagámoslo al ingeniero. Vamos a restaurar la herramienta --> un momento. Voy a salvar a este yoco un momento y voy a restaurar la herramienta. Los demás, --> por favor, váyanse al archivo delimitado en Metadata. Expande census, que fue el archivo --> que creamos, y dele clic derecho en Metadata y dele editar esquema. Dele aparecer en esta --> ventana. Un momento Alberto, a ver qué pasó. En esta opción hay para exportar, que es el --> modelo. Y entonces vamos a colocarle aquí census y no se lo olvide el punto xml. Census.xml. --> Y le da save para guardar el metadata. Esto lo hicimos en la última clase. Data integration. --> Ese metadata ahora importelo en el THDS input mientras solucionamos con Alberto acá. A ver --> voy a entrar aquí. Voy por acá a ver qué pasa. Vamos entonces Metadata, listo, clic derecho. --> En el esquema del HDFS input. --> Census. Listo, vamos aquí en browse. --> Un momento, vamos a obtener el metadata del archivo que hicimos ahora. Un momento, --> ya lo voy a hacer nuevamente porque también Alberto se quedó. Alberto, no sé si me preguntas --> qué pasó ahí, no sé Alberto. Listo, Alberto vas conmigo entonces. Los que ya lo hicieron, --> perfecto. Los que todavía no han hecho esta parte la hacemos nuevamente porque Alberto se --> me quedó. Vamos primero al archivo del limitado que creamos en Metadata que se llama census. --> Expandes census y te aparece Metadata. Dale clic derecho a Metadata y le das editar esquema. --> Clic derecho, editar esquema. El penúltimo botón. El penúltimo botón permite exportar. --> Le das clic derecho al penúltimo botón y vas a colocarle un nombre. Vamos a llamarlo --> census y no se te olvide la extensión .xml. .xml. Census.xml. Safe. Oh, lo estoy guardando en --> el botón. Recuerde la ubicación donde lo colocaste. Le das safe. Bueno, yo lo tenía --> listo y le das finish a la Metadata que tenías abierta. Vamos ahora a importar --> esa Metadata al thdfinput. Que estoy leyendo ese archivo. Dale doble clic al thdfinput. --> Dale clic en editar esquema y aparece el penúltimo botón activado. --> Dale clic a ese botón por favor y busque el archivo census que creó ahora. --> Y eso lo que le va a hacer es que le haga importar el esquema del archivo. Evidentemente --> estos son cuatro columnas. Quizás hubiese sido más rápido copiar los nombres que yo --> quería. Pero estamos hablando ya de un, digamos, algo de producción que tenga ya --> en el empresarial que seguramente va a ser mucha más columna y no voy a desgastarme --> colocando los nombres de columna y los tipos de datos. Es un desgaste ahí pues --> bastante fuerte. Le damos aquí ok. Yes. Y listo. Vamos a configurar el --> de este agregated road. Si desea, vamos a hacer aquí un pequeño break de --> James Montico para tomar algo de. Buscar un poquito de agua y volvemos en --> diez minutos para hacer esa configuración, ¿OK? Listo, gracias a --> ustedes. Bueno, continuamos. Un momento, un momento, por favor, que venga. --> Bien, ahora sí, que venga, continuamos. Listo. ¿Por qué le hice la --> similitud del ejercicio con una group by o con una consulta SQL? Porque --> normalmente cuando tú asocias lo que vas a buscar con SQL es muy fácil --> entender cómo funciona este componente que vamos a hacer ahora. --> Vamos entonces al T-agregated road. --> Por favor y vamos a configurarlo. --> La configuración es sumamente sencilla. En primer lugar, vas a colocar los --> elementos por los cuales tú vas a hacer el agrupamiento. --> Si se da cuenta con la analogía, yo quiero sacar el promedio total de los --> elementos que están en el archivo, por lo tanto no estoy haciendo ningún --> tipo de group by, ¿OK? Por lo tanto, ese elemento acá arriba, si hacemos la --> similitud de ese cuenta, cómo sacamos el promedio de todos los elementos de la --> tabla, bueno, en este caso el archivo, o simulando que sea una tabla, lo --> hacemos de esta forma. Por lo tanto, aquí este group by no iría nada, --> porque no tengo que agrupar por nada. Vamos ahora con las operaciones. --> Con las operaciones, yo tengo que sacar de salida el promedio. --> Entonces, ahora tengo que analizar cuál va a ser la entrada y cuál va a ser la --> salida mía, ¿OK? La salida mía solamente va a ser un dato que va a --> traer el promedio de ese valor que está ahí. --> Entonces, cuando tú identificas la salida, vamos a especificar entonces el --> esquema de salida. Dale clic derecho aquí donde dice editar esquema, por --> favor. Y note que por defecto tenemos todas las --> columnas de entrada. Tú tienes que configurar qué columnas deseas sacar --> nada más. Ahora, yo quiero sacar lo siguiente ahora. Voy a agregar aquí --> una columna nueva donde voy a tener el cálculo del promedio. Dale clic --> aquí. Y ahora voy a definir aquí el nombre de columna total, perdón, sí, --> total promedio. Total underscore promedio. --> Y especificas el tipo de datos según la salida que tú requieras. En este --> caso, la salida que requiero es type de tipo doble. Escoja la de tipo doble la --> salida. --> Note que aquí aparece un nullable. Significa que puede dar, o sea, si tú --> crees que la salida puede dar un nulo, tienes que especificar nullable. --> Si no especificas nullable, Java entiende que tú vas a sacar por lo --> menos un valor numérico. Si sacas un nulo, te manda error. Entonces, eso --> depende mucho de cómo tengas tus datos. Aquí lo dejo nullable por si acaso, --> pero al fin y al cabo yo sé que eso me va a dar un número. No hay ningún --> problema. Entonces, le damos aquí OK. Ya después que confié la salida, --> entonces especificas las operaciones que van a llenar esa salida. Dale --> clic aquí en el más para Operation. Y te debe aparecer por defecto la --> única salida que tienes que es total promedio. Acto seguido, --> aquí en funciones van a aparecer las mismas funciones que tú conoces de --> funciones de agrupamiento que estás acostumbrado a en SQL. Pero aquí el --> señor te agrega un par de funciones que vamos a ver cómo son, cómo tal. Pero --> en este caso en particular me interesa la función que se llama AVG, --> que es promedio de inglés. Es como la función AVG. --> Te recomiendo algo, por favor. Esto es un table en Java y el table en Java --> se nos actualiza cada vez que hagas un cambio. Acostúmbrate siempre. Cada vez --> que haga un cambio le das enter para que lo tome. Porque a veces no le das enter --> y no le toma el cambio. Seguidamente vas a escoger la columna de entrada --> sobre la cual va a ser la operación. En este caso una operación de --> promedio. Por lo tanto, la columna de entrada tiene que ser numérica. Vete --> donde dice input y escoge la columna que en este cabo sería senso, --> conteo de personas de censo de noche. Y aquí algo muy importante y más --> específicamente con el promedio es si vas a ignorar los nulos. Por defecto en el --> caso particular de motores como Oracle, el MySQL, en postres no recuerdo ahora. --> Esto que sería más o menos. La idea cuál es. --> Tú tienes por ejemplo siguientes datos. Tienes la columna entonces. Tienes por --> ejemplo id y voy a colocar aquí senso. Tienes 1, por ejemplo aquí tienes 4, --> aquí tienes 2, aquí tienes este valor null, aquí tiene 3 y aquí es 5. --> Entonces cuando yo hago un AVG, típicamente en Oracle, yo tiro aquí un --> AVG sobre la columna senso. La tabla que se llame senso, no sé, cualquier --> locura. Y esto que está aquí me devuelve en Oracle, me devuelve en Oracle --> le vuelve 4.5 porque el nulo no lo cuenta. Entonces aquí me toca hacer una --> función que se llama, se llama Oracle. La de nulo, se me acaba. Bueno, todos los --> motores tienen una función de nulos. Entonces ahora, si yo ignoro los nulos, en el caso de la --> herramienta significa que aquí ahora sí me va a dar 3. --> Perdón, si los ignoro me da 4.5. Si no los ignoro, perdón, me da 9. --> Perdón, perdón. 9. Perdón. 3. 3, 3, 3. --> Al final depende de lo que quieras hacer entonces y lo que toques. Entonces le voy a --> decir que no los ignore porque me puede dañar a mí el promedio. --> De pronto es que es nulo, faltó 0, pero no está contando esa fila. Eso --> depende al final de tu calidad de datos. ¿Qué significa para ti el nulo? --> Y verás a ver si lo incluyes o no lo incluyes. --> Volvemos entonces a la herramienta nuevamente aquí. --> Listo y aquí no hay que hacer más nada. Y ahora lo que voy a hacer entonces es --> conectar la salida del T-AggregatorRow con el TeloRow. --> Aquí voy a hacer una pequeña confusión más de gusto mía. Voy a --> decir que lo muestre en forma de tabla. Es una cuestión más de gusto mía. --> Y mire lo que va a hacer. Va a ser un simple promedio. Le das doble click y le --> digo que me muestre por favor en formato stable. Analice lo siguiente --> nuevamente. Como esto viene de un THDF input significa lo siguiente ahora. --> Vamos a suponer que ese archivo tuviese 5 millones de registros. --> ¿Qué es lo que haría? Vas a tener por ejemplo 5 nodos. Dividiría --> ese promedio en los 5 nodos y eso te hace que sea más veloz el tiempo de --> respuesta con ese volumen de registro. Estamos hablando que ese registro nada --> más tiene como 5.000. No sé cuántas son pocos. Esto simplemente a nivel --> académico pero ya en un ambiente real que tengas un clóster bien montado --> pues eso se clostriza. Además que en el caso particular de la arquitectura --> nosotros nada más tenemos un nodo. O sea, ahí ni modo. Ahí lo hace --> solamente con un solo nodo. Ahí ni modo. Pero él automáticamente distribuye con --> las cantidades de nodos que tú tengas. Por favor, ahora sí vamos a ejecutar --> aquí entonces. Vamos a ejecutar. --> Y lo que vas a hacer es simplemente la salida del promedio. No es nada del otro --> mundo. Recuerde que esto que hago yo con Big Data no es nada de --> el procesamiento que no hacías anteriormente. Lo que pasa es que te --> cambia la forma. Pero en el fondo el procedimiento es igual. --> Listo. Ahí está leyendo el archivo del hadut. --> Y lo que hace el final es que saca. Evidentemente aquí no vamos a medir el --> tiempo de respuesta porque estamos hablando de que estamos muy --> limitados a nivel de memoria. Y segundo que nada más tenemos un --> nodo configurado en el hadut. Evidentemente ya un clóster vas a tener --> 5, 10, 20 nodos y se distribuyen los 20 nodos. Y aquí estás aplicando --> procesamiento con Big Data. Es decir, aplicas almacenamiento y --> procesamiento. Porque en algunos casos nada más hace el procesamiento. El caso --> de Spark. Spark normalmente pues lee pero no hace almacenamiento como tal --> como hace el caso de hadut. Claro, claro, cómo no, mira. En primer lugar --> revisa lo siguiente. Revisa el esquema de salida. El esquema de salida agregué con este --> más una nueva columna llamada total promedio. Y la definí de tipo doble. --> Primer cambio que hice. Los de salida para acá. Claro, porque entonces --> esperarías una salida para cada uno de ellos. Nada más en este caso --> quiero una salida. Total promedio. --> Sí, de tipo doble. --> Listo. Vas entonces al te agregué. En el te agreguéte. Perdón, te lo muestro de acá abajo. --> Mira lo que va a hacer ahora entonces. En Operation agrega una nueva columna. Te --> debe aparecer por defecto total promedio porque es la única columna que tienes. --> La función es AVG y el input es la columna sensus 9. --> Vamos a decir el siguiente ejercicio sobre tu pregunta. Sí señor. Vamos a decir tú el --> siguiente. En este caso no, bueno, no, en este caso después que muestra esto se --> pierde completamente. Lo que vamos a hacer ahora lo siguiente es la salida --> la vamos a llevar nuevamente a hadut. Y la tenemos allá y sí a un archivo de --> este no. Este hizo el cálculo con big data y sacó el resultado. Ya no puedo --> hacer más nada ya. No puedo. Ah no, bueno, listo. Bueno, aquí hay varias cosas. --> Una es que yo siga progresando aquí y todavía decir, no sé, colocar aquí un --> tema por ejemplo. Después sigo agrupando y el resultado está en --> memoria. Si yo integro aquí. La otra opción es la siguiente que me --> interesa de tu pregunta. Supongamos que yo quiero usar ese resultado más --> adelante. Entonces hay una opción que se llama, hay un componente que se llama --> debuffer input y entonces tú mandas esto y te lo guardas en memoria principal. --> O sea, conectas a este señor aquí y después recuperas el dato del buffer. --> Lo tienes en memoria principal. Debuffer input. --> Parece que hacemos de pronto un ejercicio con este debuffer. --> Pero muy interesante la pregunta. Muchas gracias. --> Listo, lo dejo como estaba. Y vamos al siguiente. Dígame. A ver qué pasó si es el --> mismo archivo. Es el mismo archivo. No puede ser. Vamos a ver. Alberto. Vamos a --> ver. Alberto, ya te vi. Muéstrame por favor el T-aggregator row, por favor. --> Muéstrame tu esquema, editar esquema. Vete a tu esquema y editar esquema. --> Muéstrame tu HDFS input, por favor. El HDFS input. Muéstrame acá en tu --> browser, ese census.csv. Gracias. Sí, porque el archivo de entrada venía --> con separado por coma. Qué pena. Muchas gracias. --> Quita el punto y coma y pónle coma y ejecuta, por favor. --> Efectivamente, estaba leyendo otra cosa. La posición. Recuerda que es la --> posición de... Ahí está. Ahora sí. Sí, señor. Así como usted dice. Estaba leyendo otra cosa. --> Listo, vamos a hacer entonces el siguiente ejercicio. Váyase a su QA, por favor. A su --> carpeta QA. Perdón, estoy en tu máquina, Alberto. Qué pena. Vamos aquí a su --> carpeta QA. Se me perdió. Acá la tengo yo. Listo. Carpeta QA. Listo. Bueno, entonces, --> vamos a agregar a esa carpeta QA del archivo que descargamos en la última --> clase, donde la carpeta se llama TBD. Busquemos un archivo que se llama --> producción. Yo la descargué. Está aquí en download. TBD, CSV. Y me interesa --> este archivo que se llama producción. Por favor, colóquelo en su QA, --> que es la carpeta que estamos tomando y referenciamos con el contexto. Pégalo aquí, --> por favor. De producción. No está en producción. Estaba en la carpeta que descargamos de lo que --> compartí. Recuerda que recargamos una carpeta que se llama TBD. En TBD estaba --> su carpeta que se llama CSV y aquí está producción. Producción.csv. Ese --> producción.csv, por favor, colóquelo en la carpeta que se llama, bueno, --> en el caso mío, la carpeta QA que tenemos referenciada desde el contexto para que sea --> mucho más sencillo buscarla. Voy a agregar un nuevo componente aquí que no lo hemos --> visto. Entonces, para esto, por favor, vamos a hacer lo siguiente. En la carpeta de job, --> dentro de AXA, vamos a agregar aquí un nuevo folder que lo vamos a llamar integración --> jobs. Integración jobs. Voy a agregar un nuevo componente. Continúo entonces. Ojo a lo --> siguiente. Yo podía hacer el mismo ejercicio sin big data, claro. Por ejemplo, --> qué quiero hacer ahora. Voy a leer los datos de producción y yo voy a hacer una metadata. --> Listo. Y le agrego estos componentes de t-arrogate para que agrupe, --> sube, calcule. Y me va a funcionar. ¿Qué diferencia hay con esto? Con el --> THS input que HD input usando big data. En cambio, que si lo hago con la metadata --> directamente, no me sale. No me sale con big data, pues. Me sale el ejercicio, --> pero de forma traicionada que llaman algunos. Entonces, voy a crear dos jobs para crear un --> nuevo componente, ¿OK? Va a haber un job que va a coger el archivo de producción y lo va a --> llevar a Hadoop. Entonces, ¿qué te recomiendo? Búscate en los ejemplos que hicimos de Hadoop. --> El que subía un objeto Hadoop. Este que está aquí, subir objeto Hadoop. Este fue el que --> hicimos, que es prácticamente igual. Sí, exactamente. Entonces, voy a coger este, --> pero vamos a hacerlo por parte de un momento. Voy a coger todos los componentes que están --> aquí y los voy a pegar acá en el nuevo job. Que lo voy a llamar, entonces, --> aquí en integration job, voy a crear un nuevo job. Que lo voy a llamar job, subir, archivo, --> production, underscore, Hadoop. Job, subir, archivo, production, Hadoop. Y voy a pegar los --> componentes que tengo del job anterior que subía un archivo a Hadoop. Para que me sea --> más sencillo. No sé, pego estos componentes aquí. Y listo, ya tengo prácticamente la --> configuración de este job. No lo ejecute, por favor, porque lo vamos a ejecutar en un --> job y después lo ejecutamos. Para que me entienda la idea. Repito nuevamente, --> copia todos los componentes del ejemplo que hicimos, subir, objeto Hadoop. Después crea --> un nuevo job dentro de la carpeta de integración job, que lo voy a llamar job, subir, archivo, --> production, Hadoop. Y pega los componentes copiados. Listo, perfecto. Para cambiar un --> job, para cambiar el job, pero tiene que estar yo cerrado. Si no, no lo deja cambiar. --> Tiene que cerrar el job y después le da a editar y ahí sí le deja cambiar. Sí, --> sí está cerrado. Lo único que puedo hacer en esta versión es cambiarle el nombre. --> No dejo, no dejo. O sí. Sí. Ah, production es production. Bueno, está en inglés, --> production, el archivo era production.csv. Listo, ahí está. Perfecto. Listo. Listo, --> entonces, como esto está prácticamente configurado, lo único que voy a hacer es --> en el HDFSputs, por favor. Quite los archivos demográficos, lo elimino y el --> voy a cambiar por production, csv. Production, csv, ¿qué se llama? Y lo pego acá con el --> mismo nombre para que me lo cree en Hadoop con ese nombre que especificue que es el --> mismo de entrada. Configure nada más, no lo ejecute, por favor, porque queremos hacerlo --> de forma diferente. Tenga en cuenta, por favor, la siguiente configuración. Cuando --> subimos un archivo a Hadoop, te ofrece la opción de crearlo o sobreescribirlo. --> Ok, en esta opción, pues el archivo no está creado, puede funcionar MeCreate, --> pero hay algunos que dicen, no, yo lo coloco sobreescribir, pero no siempre, --> porque de pronto vas a dañar algo que tienes. Entonces, a veces, ese sobreescribir --> puede ser peligroso. Sobreescribe algo que de pronto tenga y que necesite más adelante. --> Sí, señor, lo crea si no existe. Sí, en el Pug, exactamente. En el Pug nada más le --> va a quedar esa línea con el nombre del archivo productio y con la salida que sería acá el nom. --> Vamos a ver. Ah, nada, vamos a ver. En el nuevo Yop, es un nuevo Yop. No, --> en primer lugar porque copió, tiene que buscar, son los objetos. Vóquese el de --> subir objetos en Hadoop. Ahí lo tiene. Yop, subir objetos Hadoop. Ahí lo tiene. --> Es el que está ahí. Nada más copie el HDF input porque lo demás lo tiene. Cópielo. --> Bueno, listo. Váyase al nuevo Yop y elimine ese HDF input que es su paralelo y los demás --> componentes los borran. La aggregate y el telo robo. Le hizo. Dele doble click a --> ese HDF input. Borre en la fila de demográficos. Click ahí, dele click en la fila esa. Abajito --> la línea con las comidas doble y lo pega el new name para que le quede el mismo nom visto. --> Eso no lo hacemos, no lo vamos a ejecutar porque lo vamos a ejecutar un poquito --> de forma diferente. Listo, ese es el primer Yop que tenemos. Vamos con el segundo Yop. --> Listo, entonces el segundo Yop, voy a buscarle el sitio aquí. Ya que no tengo --> apuntado el sitio que vamos a hacer. Un momento, por favor. Aquí no es. Listo, --> lo que voy a hacer es que voy a mostrar. Un momento y confirmo acá. Voy a mostrar el total --> cultivado por distrito. Entonces voy a mostrar aquí el archivo como está configurado. Un momento, --> producción. Aquí está. Editar. Aquí en editar tengo muchos campos. Uno tengo el distrito donde --> se cultivó y tengo el área cultivada. Quiero hacer lo siguiente que me muestre cuál es el --> área cultivada por distrito. Si tú analizas esta parte y haces la relación como si fuera --> una consulta SQL, te va a quedar más o menos así. Te va a quedar así. Este de acá. Listo. --> Te va a quedar un select from, vamos a suponer que se llame producto. --> Estoy haciendo aquí la analogía porque así es más fácil hacerlo. Group by y dice, --> oye, agrúpame por distrito. Por distrito. Muéstrame los grupos que formas por distrito --> y por favor súmame el área entre cada uno de ellos. Esto sería más o menos como te --> quedaría con una consulta SQL. Cierto? Entonces cuando tú haces la analogía te --> queda más fácil hacerle Group by allá en el integrated. Esto es lo que quiero hacer, --> ¿OK? Entonces viene lo siguiente. Vamos a agregar aquí un nuevo job aquí en integration, --> por favor. Crear job. Lo vamos a llamar entonces shop. Job obtener producción por distrito. --> Obtener producción por distrito. Le da Finish por favor. Listo. Entonces para esto voy a --> copiar la conexión al hadut. Si tú quieres coloca la estática o la dinámica. Ya no --> digo cuenta que cualquiera don no funcionó. Tú eliges cuál es la mejor entendiendo tu --> contexto. Yo voy a coger cualquiera de ésta. Este preyok lo voy a coger aquí y lo voy a pegar --> acá. Necesitamos lo siguiente. Un HDFS input para leer y es el que me va a hacer el bitdata --> ahí para adelante. Si lo leo con un componente diferente, o sea que no sea o un HDFS input --> o un TSPAR, no estoy haciendo procedimiento con bitdata. Voy a usar ahora un T-aggregated --> para agrupar y voy a usar ahora un THF output para la salida, mandarla nuevamente a hadut. --> O sea, HDFS output de salida. Perfecto. Vaya adelantando algo lo que ya hicieron --> los componentes. Configure las conexiones en el input y en el output. O sea usar conexión --> existente. Que sería nada más darle aquí usar y escoger la conexión. Para aquí --> usar la conexión. --> Listo. No, copia el otro yo para evitar si no nos deponemos más tiempo. Copia el otro yo, --> el que tú quieras, el que hicimos estático o el dinámico, cualquiera de los dos que te --> haya funcionado, cópialo ahí por favor. Seguimos. Por favor conecta los diferentes --> componentes, el input con el T-aggregated y el T-aggregated con el output por favor. --> Y hacemos la configuración. --> Vayamos al input y definamos dónde es la entrada, qué archivo vamos a leer. --> Entonces vamos a lo siguiente. El archivo que vamos a leer todavía no está en hadut, --> quien lo va a subir es el joque anterior. Entonces voy a colocar, vamos a suponer que ese --> joque ya se ejecutó y voy a colocar que va a buscar un archivo en la carpeta AXA, --> slash, lo llamé como en la salida, production, ¿verdad? Production.csv. Confirme que ese fue --> el que hizo en el joque anterior. En el joque anterior configuró la salida, en el put colocaste --> el nombre de salida, production, creo que lo coloqué sin la T, está bien, production. --> Este archivo particularmente está separado por coma, entonces dele aquí coma y dígale que --> tiene un header. El custom, esto ya es por costumbre nosotros, por los idiomas otros, --> pues UTF-8. Si su dato está en inglés, pues ese hizo le funciona perfectamente con el inglés, --> no hay ningún problema. Voy contigo. Ah, listo, es en el, no, porque aquí no es un put, --> sino un HDFS input. Elimina ese put, por favor. Ah, ok, dale doble click ahí. No, --> en el de leer, en el de leer. Ese es el que lo sube a, lo sube a HS, a Hadoop, --> ese no hay problema. Búcate en el de obtener el promedio, listo. Listo, ahí, ahí. Cambia --> ese put por un input, o sea HDFS input, porque vamos a leer. En el caso particular, --> cuando yo subo un archivo, la herramienta no me permite formatear, formatear los --> separadores. Va puro como está el archivo. HDFS, HDFS, HDFS input, ese que está ahí. Ahora, --> configura la conexión existente, listo, production, perfecto, punto CSV, y agrégale --> que el separador es coma y tiene un header. Hay ya uno. Por costumbre, para esto es todo --> necesario, pero dale custom encoding, dale custom encoding, que no es necesario, --> simplemente por costumbre, dale click ahí, y usamos UTF-8. Pero esto no funciona perfectamente --> con ISO, porque está todo en inglés. Listo, por favor conecta ahora el input con el Tegregate, --> y el Tegregate con el output. Y vamos a hacer eso, lo que vamos a trabajar. Listo, --> vamos a hacer este esquema ahora, vamos a hacerlo manual, para que tenga los dos ejemplos, --> listo. Ya usted verá cuál es mejor. Quizás, si hay poquitos datos, creo que demora más, --> menos, agregando el esquema, aquí manual. Si son muchos, creo que la opción que le di, --> pues es mucho mejor. Vete al esquema del input, por favor. Al esquema del input. --> Y te voy a mostrar cómo está la producción. Entonces, producción, cómo está. Aquí en Cuba. --> Yo no había agregado esto acá en Cuba. --> Estoy perdiendo la emoción, entonces. Un momento ya, te voy a mostrar cómo está. --> CSV, Production, click derecho, editar. Y está compuesto por los siguientes campos, --> estado, distrito, crop, year, season, crop, área y producción. Entonces, voy a hacer un --> esquema, que por lo menos los nombres, no es necesario que coincida. Lo que debe coincidir --> contigo es la posición y el tipo de datos. Entonces, vayamos acá y agreguemos una nueva --> columna aquí y la vamos a colocar en español, estado, de tipo string, por favor. Agregas otra --> de tipo, la vas a llamar distrito, de tipo string. Por el problema de la ñ nosotros, --> que por cierto, si quieres una clave súper segura, agrégale una ñ. Porque con la --> técnica diccionario datos, normalmente los diccionarios lo buscan en español, en inglés. --> Listo. Cambiemos entonces, aquí, ésta la vamos a llamar anualidad y va a ser de tipo entero. --> Va a ser de tipo integer. Listo. Agrega, dale enter aquí. Enter. Sí. --> No, en este caso estoy haciendo un ejemplo diferente. Lo voy a crear manual para que --> tenga los dos ejemplos. Uno fue el de importar y uno de crear lo manual. Tendrías que irte --> entonces, nuevamente. Lo hacemos nuevamente. Vas por acá en el input y le das editar el --> esquema. Y le vas dando más. Los campos que he agregado son estado string, distrito string y --> anualidad integer. Son 7. Entonces, aquí voy a colocar temporada en español, de tipo string. --> Voy a colocar, el otro es temporada. Este viene siendo, este crop es tipo de cultivo, --> optimal. Tipo cultivo, de tipo string. Y terminamos con dos más que son aria, de tipo, --> este señor es doble. Y terminamos con el tipo que es producción, que también es doble. --> Producción en español, sin la tilde, de tipo doble. --> Confirmo, estado es tipo string, distrito tipo string, anualidad tipo numérico, --> temporada, crop es tipo de cultivo, o sea, si cultivó arroz, bueno, cualquier cosa. Y --> aria es doble y producción es doble. Al final tú decides, si el esquema es muy pequeño, --> creo que sale más fácil, o sea, más rápido, perdón, más fácil no, más rápido hacerlo manual. --> Si ya son muchos campos, pues mejor tómate una pequeña muestra del archivo, --> haces una metadata y después le copias y exportas esa metadata, le importas a donde --> necesites. Perdón, tipo cultivo, venga, no escuché bien. Tipo cultivo, es tipo string. --> No sé si fue esa pregunta que me hizo, que se me perdió la comunicación. --> Buen ojo, buen ojo. Eso que de buen ojo son buenísimos para analizar de datos. --> Bueno, en primer lugar, cuando tengo string significa que estoy manejándolo con java. --> Entonces, ahí lo que define el tamaño máximo es java, o sea, que ahí no me preocupo por --> el tamaño que tenga el string. Ese problema no pasó, fue cuando intentamos crear un --> tabla, porque para crear una tabla yo tengo que tener un tamaño fijo, un barchar, un tamaño --> máximo, perdón, un tamaño máximo. Entonces, ¿qué pasaba? En que había un string que superaba --> ese tamaño máximo porque normalmente hacía el estudio con los 50 millones de registros. --> Específicamente para este caso no es necesario cuando voy a leerlo con java, --> pero cuando voy a mandarlo para una tabla sí es importante ese tamaño máximo, --> que fue el problema que tuvimos. Gracias a ti por la pregunta. --> Bueno, aquí le damos aquí ok, listo, le damos yes, y ahí tiene los dos ejemplos, --> los dos ambientes manual y bueno, semiautomático con la exportación. --> Ahora sí, configuremos el tegregate, por eso que te digo que con tener la --> consulta presente, ¿cómo sería con ese QL? Muy fácil. ¿Qué me toca agrupar por distrito? --> Entonces, en la parte de Group By, por favor, un momento, un momento que se me... --> En la parte de Group By, dale click aquí, perdón, que pena, que pena, --> vaya primero a editar esquema, que pena, editar esquema y ese cuenta lo que quiero --> mostrar. Quiero mostrar el distrito y la sumatoria de áreas. El distrito viene de --> la tabla, entonces voy a coger distrito y lo voy a pasar para acá. --> El segundo, de ese cuenta que no viene de la tabla, sino viene calculado, --> significa que toca agregar a usted la variable. Agregue aquí la variable y --> esto va a ser total cultivado y cambie el tipo a doble. --> Aquí lo coloque Day y es doble. --> Con la analogía, el SQL es mucho más sencillo. Partimos del hecho de que el archivo no está --> en una base de datos, pero normalmente este Group By y operaciones funciona muy parecido --> como si hubiese hecho un Group By a nivel de SQL. Nada más distrito que viene de la tabla y --> total cultivado que lo tengo que calcular. Le damos aquí OK y ahora sí. ¿Por qué columna --> voy a agrupar? Si me fijo entonces por la consulta que coloqué acá por distrito, --> entonces doy aquí click, doy aquí click y perdí nuevamente, doble click aquí, --> le doy click aquí y aquí por defecto una persona distrito, no hay problema, --> esa es la que voy a escoger. Y en operaciones dele click y aparece la nueva columna que agregué. --> En este caso, ¿qué voy a hacer? La función va a ser suma --> y el input column va a ser area. El ignore nulo aquí carece relevancia, --> porque normalmente si tú le agregas los nulos, el por defecto le colocará el módulo la suma, --> que sería cero. Entonces ese ignore nulo es muy bueno, es cuando va a sacar un promedio, --> porque para si tengo en cuenta los nulos o no los tengo en cuenta nulos para sacar promedio, --> es simplemente eso. Entonces da lo mismo si lo agregas o no lo agregas ahí. --> Acto seguido, vamos aquí a donde dice el output, vamos a decirle hacia dónde lo va a --> llevar entonces. Voy aquí a HDFS output y ahora cuando voy a agregar, no cuando voy a subir, --> sino cuando voy a crear un nuevo archivo, si me permite formatearlo como yo quiera. --> En primer lugar por favor coloque la ruta donde lo va a colocar. Sería AXA y dele el nombre, --> lo voy a llamar producción underscore por underscore distrito. .csv, si dígame, --> sería diagonal AXA, diagonal nombre del archivo que uno lo quiero crear. Si deseas, --> no, al final no, porque él asumiría que está buscando una carpeta. --> A menos que por defecto le entienda, pero no creo que puede tener un problema porque --> creería que puede ser una carpeta. Cuando lo agregamos será en el contexto, --> porque íbamos a concatenarlo con el nombre del archivo. Es decir, en el contexto usted --> normalmente lo hacía de esta forma, esa llegaba hasta aquí, como así AXA. Llegaba --> hasta aquí y después técnicamente lo que hacía era, oye, súmale eso que tienes ahí, --> el nombre de producción. Y al final le quedaba, si yo sumo las dos, me quedaba esto --> como si fuese esto así. Me quedaba, concatenaba esto y me quedaba como si fuese, --> mira, creerlo en el archivo este. Por eso es. Bueno, listo. Ya parece que aquí no --> vamos a hacer más nada. Verifique que tenga la conexión existente. Dígame. Bueno, listo. --> Por defecto, bueno, aquí porque está leyendo, aquí como va a crear uno nuevo, --> no lo voy a subir, se va a crear uno nuevo. Aquí me pide, oye, quieres que todo separe por --> punto y coma por defecto? Quieres que está acá abajo, ve. Si deseas, dejémonos con coma para --> no evitar de pronto como estamos trabajando con coma. Y aquí, pues, el custo aquí no me afecta --> nada, pero porque si quiere cambia la UTF8 que no lo cambié. Ya por estándar de la empresa, --> que de pronto está en español, acostúmate siempre a usar UTF8. Ah, bien, encabezados. --> No, entonces lo estoy incluyendo. --> Se ha dado, perdón, gracias. Aquí está. Muchas gracias. Incluís. Ahí está, en la parte --> abajo, por favor, se incluyalo. Sí, porque después perdemos la referencia de los que ven ahí. --> Incluye el híder. Sí, sí, muchas gracias por la observación. --> Señor. Sí, señor. Exactamente. Muy bien. Exactamente. Bueno, esto no es nuevo. Ya --> habíamos hecho. Vamos a agregar un componente nuevo. Ok. Miro siguiente. Para que esto me --> pueda funcionar, yo debería, primero, ejecutar este job, que es el que sube el archivo de --> producción, y después ejecuto el job, que es el que va a leerlo con Big Data, saca --> los cálculos y me genera un nuevo archivo. Entonces, cuando tú tienes varios jobs y deseas --> ejecutarlo entre sí, hay un componente que te hace eso. Entonces, para esto, --> por favor, vamos a agregar un nuevo job, que es el último, antes de ejecutarlo. --> Lo voy a llamar Job Integrador. Sí, Job Integrador lo voy a llamar. Job Integrador. --> ¿Me das filles, por favor, aquí? Claro. ¿Cómo no? Claro. No, claro. ¿Cómo no? No me preocupes. --> Aquí. Vamos aquí al te agregué este y mira lo que tengo, nada más. Primero, --> confirma tu esquema de salida. Debes tener distrito, que los jalas de aquí para acá, --> y creas una nueva variable llamada Total Cultivo de tipo doble. Primero que tienes que --> confirmar. Listo. Segundo, veamos la configuración. A nivel de Group By, --> dale a Quién más y vas a escoger Distrito. Creo que sale por defecto esa, porque es la --> primera que encuentras. Ahora, en Operation, dale click para agregar un nuevo Operation aquí, --> más, te va a aparecer Total Cultivado, que es el nuevo columna que agregaste. En la función --> va a ser Suma y el input column va a ser Área. Ignorar nulos o agregarlo es dar lo mismo, --> porque por defecto si hay un nulo, le colocas el cero, que sería el módulo de la Suma, --> y no te va a afectar. Eso afecta más que todo cuando es promedio. Ahora, --> no sé si ya creaste, por favor, créate un nuevo Job llamado Job Integrador. Job Integrador. --> Y en este Job Integrador vamos a hacer lo siguiente. Busca un componente que se llama --> TroomJob. TroomJob. Y agregue 2, por favor. TroomJob. Y los une entre sí. Con un Main aquí, --> los une. Ah, también salen. Sí, sí, claro. Hay otra forma. Lo tiras aquí y te sale, --> ¿verdad? Sí, ahí te aparece exactamente. Las dos formas son directamente válidas. Sí, --> evidentemente. Ojalas los Job, pero ten presente lo siguiente. Entonces, --> el primer Job que vamos a ejecutar, en este caso voy a buscarlo. De esta forma, --> voy a buscar el Job, que sería el Job que sube el archivo. Entonces, voy a buscar aquí. El que --> sube es Job Subir Archivo. Perfecto. Y el otro archivo que tenemos, el siguiente sería el otro, --> que es el que saca obtener producción por distrito. El otro que sería de calcular la --> producción por distrito. O sea, los que están en la carpeta de integración Job. --> Bueno, vamos a ver, vamos a ver qué pasa. Seguramente puede haber muchos errores. Vamos --> a ejecutar entonces el Job de integración. Ese, no, a mí también salió. Es un warning. --> Dice que no hay un esquema de entrada. No hay esquema porque estoy tomando el Job por defecto. --> Estoy ejecutando el Job y el esquema tiene el Job. No sé por qué ese warning hay. Ejecutar --> vamos para ver qué pasa. Primero ejecutaría el primer Job, que es el que sube, y después --> ejecutaría el segundo Job. Vamos a ver si no hay ningún error de configuración. Listo, --> aquí hay un pequeño error. Me salió a mí. Error de compilación. Me salió a mí. Creo --> que está en el primer Job. Voy a revisar para ver. Los contextos. Se nos está olvidando --> importar los contextos. Aquí está el error seguramente del contexto. Efectivamente. El --> contexto tengo que subirlo en los dos archivos. En el de subir que no importe el contexto. --> Se me olvidó. Y en el otro que es el de obtener la producción. --> Bueno, de las dos formas, como tú dices. O yo puedo hacerlo uno muy particular para cada Job, --> o hago uno muy general para que herede los demás, que es lo que estamos haciendo. --> Normalmente el de heredar es para lo que lo vas a reutilizar en EBS. Vamos a guardar --> Listo. Fíjate que yo puedo agregar lo que yo quiera. Ya sería muy particular ese Job. --> Voy a confirmar para ver si se me quito la parte de los errores. Voy aquí al Code. --> Sí, listo. Entonces voy a ejecutar nuevamente el de integrador. Voy a darle clip a ver si --> verifique que esté ejecutando el Job correcto. Vamos a ver si no hay ningún tipo de error. --> Para el Guarding no hay problema. Mientras no sea Guarding vamos a formater su equipo. --> Un momento, a ver. Ya llego ya un momento para ver si de pronto no tengo ningún tipo de --> error. Bueno, está haciendo la labor de subir el archivo y tengo un error en la salida. --> Dice, vamos a ver un momento. Un momento, por favor. Creo que me equivoqué en el --> nombre. Primero voy a verificar. Me dice que hay un pequeño error. Voy a verificar --> en el browser. Voy a confirmar si subió el archivo. Vamos a darle F5. --> No me subió el archivo. Vamos a ver qué pasó. Ah, en el caso mío el problema es que este --> señor no lo tengo en QA. No sé, lo dije que lo iba a colocar y no lo tengo en QA. --> Voy a agregarlo aquí en QA porque este archivo no está en QA. Y ese fue el error --> que me salió. Voy a ejecutar nuevamente a ver. A ver si sube. --> Verifico para ver. Ya voy a cada uno y reviso. --> Listo, entonces primer job lo está ejecutando. --> Debería subir el archivo. Ya lo subió. --> Listo, y ejecutó el segundo job y debería aparecer otro archivo. Aquí está --> producción por distrito. Aquí lo puedo descargar si mis cálculos no me --> fallan. Y debería aparecerme si mis cálculos no me fallan. Aquí está si lo --> de a descargar. Debió darme por distrito la producción. --> Ahí está. Bueno, puro tarán. Bueno, Singapur. No sé dónde será eso, pero --> bueno. Listo, a ver quién no le funcionó y le reviso para ver. Bueno, --> voy con Ana un momentito y ya voy con Julio un momentito, por favor. --> Bueno, Ana, voy contigo un momento y tienes... Primero, revisemos para ver si --> importamos los contextos en los jobs. Dale OK, por favor. Vete a los jobs, --> hijos. O sea, al job de subir archivo, por favor, de subir archivo. Ahí no lo --> tenemos importado. Dale importar, por favor. --> Importar context. OK, y nuevamente importamos acá. Le das por favor --> guardar. --> Listo, vamos al otro que es el de obtener producción y miramos los contextos y ese --> parece que sí lo tiene. Sí, lo tiene. No, no lo tiene. No, no lo tiene. Dale ahí, --> importa, listo. Recuerde que si lo ejecutamos dos veces va a haber un --> error porque va a intentar crear un archivo que ya está creado. Si te --> funciona la primera vez. Vamos a ejecutar entonces job integrador, por favor. En --> el room, vete al room. No, porque los conceptos están en los jobs. Este --> es el de ejecutar esos jobs, nada más. O sea, él no está usando en --> ninguna manera el contexto de este job. Los demás sí. Esperamos para ver qué --> pasa. Exactamente. Vamos a ver qué pasa. Ya llegó donde los demás, un --> momento. Listo, subió el archivo. Me parece que subió el archivo. Sube para --> ver, sube para ver. Ah, no, no. Listo, vete a tu, creo que no subió el --> archivo. Vete a tu, el de subir archivo. Vete a subir archivo. Vete a tu, el, el, --> ese puto. Dale doble clic, por favor. Ahí te faltó el nombre del archivo ahí --> que vas a subir. Ah, no, perdona, ahí está. Producción. Previsa si en tu ruta de --> Cuba está esa producción, por favor. Está en Cuba. No está ahí. Pégalo ahí, --> por favor. Lo pegaste en producción. Lo pegaste en el ambiente de --> producción. Lo que hace que este de producción es de producción de, da la --> casualidad que se llama producción porque producen, producen alimentos. --> Entonces, cópia ese producto, por favor, y lo pegas acá en Cuba y vuelves --> a ejecutar nuevamente el joque integrador para ver si lo subes. --> Entonces, dale, dale, dale. Vete a run, acá en el run. Dale, yo, dale, --> dale clic en el joque de allá arriba, joque integrador. Listo. Ahora, si --> ejecuta desde acá abajo, dale clic ahí en ese run, vuelve a ejecutar. --> Dígame. Es decir, el de arriba murió, pero siguió ejecutando el segundo. --> ¿Usted quiere que el segundo no se ejecute? --> O sea, él ejecutó primero. Lo que pasa es que el primero tuvo un error. --> Lo que hace que el primero de Ana tuvo un error. Sube para ver, Ana. --> Dice lo siguiente. Caráter decimal big number. Hijo, muestra y aparece y te subió --> chido para ver. Muestra a ver si te subió. Vete a browser, por favor, si --> están amables. Dale F5 ahí. Bueno, creo que, por si las dudas, --> dele clic en esa producción ahí un momento. No, ya sé, váyase a su input, al --> segundo, al segundo job, que es el de calcular el, de obtener el segundo --> job, el de obtener el distrito, el T. Váyase al input, por favor. --> Al input. Y ahí el separador no es punto y coma, sino coma. --> Porque el archivo viene por coma. Dale guardar. Ahora, creo que le va a salir un --> error porque el archivo está creado ya. Váyase al job, por favor, al --> primer job, que es el de subir archivo, y dígale que lo quiere --> sobrescribir. Váyase al HDFS puts, por favor. --> Y dígale ahí que en vez de create, sobrescriba, porque ya el archivo estaba. --> Para no que no salga error. Dale ejecutar, por favor. --> En el integrador. Ahora, vuelvo a la pregunta, Lilián, un momento, porque --> sería interesante, hay un par de cosas de configuración. Por favor, váyase a --> su archivo, a su browser, y debería tener un archivo nuevo allá. Dale F5 y --> no está. Muestrele para ver su output, su output, para ver el de --> el otro job, el job de producción, de obtener producción por distrito. --> Muéstreme su output, allá, su salida. Dale allá el HDFS output, por favor. --> HDF, esto, a ese limpo el output. El output es doble clic. --> No lo vi. Dale nuevamente, por favor. No, no. Muéstreme el output ese. --> Muéstreme la configuración que tiene. Dale click. Ahí le debió crear eso. --> Intente ejecutar ese job para ver. Porque ahí debió crearle porque ya el --> archivo de producción está listo. No sé por qué no le creo. --> No, no. Ese es un warning ahí. Listo. Muéstreme nuevamente su salida en el --> browser y le da F5, por favor. Váyase a su, no, váyase a su job integrador, --> porque cuando vayas a su job integrador, ¿no será que usted está ejecutando dos veces --> mismo? Váyase a job integrador. Váyase a terroon job segundo, --> el terroon job dos, dale doble clic. Al terroon job dos. Bueno, no sé por qué, --> no sé si fue que no le calcamos, pero si usted quiere lo intenta --> ejecutar nuevamente, debería darle, no sé. Ah, pues intenta ejecutar, --> le va a intentar sobre escribir el otro, tiene que sobre escribir la salida --> porque ya está creado. Bueno, ¿quién más me decía? Julio, ¿verdad? Julio, --> te salió ya. Listo, perfecto, aquí no le gustó. Creo que a todos. --> Entonces, ¿quién me habló? Gerardo, vamos a ver qué tipo de --> que sí. Sí señor, pero ya me gustaste, ¿qué? Integer, son integer, son integer, --> sí señor, son integer, pero esperad un momento, lo que pasa, espérame, espérame, espérame, --> eso es lo que mete dónde, el de área, el total área sí es doble. Un momento, --> espérame, espérame. Sí, sí, está bien, está bien, pero espérame un momento, --> mire lo que va a pasar. Vete a tu HDFS input, muéstrame el esquema, --> editar el esquema, está bien, sí, sí, yo lo que meto acá también, dale OK y ejecuta --> para ver. OK, perfecto, lo hizo. Vamos a ver si sale. Bueno, el que viene, vamos a --> mandar la salida a un correo, porque seguramente va a tener que usar correos --> para mandar algún dato con la herramienta, entonces vamos, sube para --> ver, dice, ah, ya está listo, sí, lo que hace es que intentó montarlo, --> vete a tu subir, vete a subir, por favor, vete a subir, archivo, producción, --> por favor, dale doble clic ahí, me lo muestras, y entra a la confiración del --> del PUT, por favor, si le está llamando, dale doble clic, --> y cambia a sobre escribir, porque va a intentar crear un mismo --> archivo, y entonces va a salir sobre escribir. Ahora sí, ejecuta, guarda y --> ejecuta el tuyoke integrador, por favor. Sí, en el otro no, exactamente, --> porque va a intentar crear y manda, mira, ya se está creado, no lo puedo volver a --> ver las veces, en cambio que sobre escribir sin el problema. Bueno, como decía, vamos a hacer el --> ejemplo ahora, vamos a mandar la salida a un correo, --> seguramente lo va a tener que usar para de pronto enviar datos, estadísticas, --> o quizá que le confirme si un jocule funcionó correctamente, entonces --> vamos a hacer el de correo ahora. Bueno, creo que ya subió, y ahora está --> haciendo el cálculo, y hay un error, sube para ver, --> input string, bueno, ya el error es diferente, creo que tienes un error, --> vete a tu obtener, producción, por favor, el obtener, --> y mira el carácter de escape que tienes ahí, porque está leyendo una --> columna mal, esperemos que abra, listo, y busca el thdfs input, por favor, el --> input ese, no, ahí tienes bien, --> y muéstrame el esquema ese que tienes ahí nuevamente para ver, --> tienes estado, distrito, anualidad, tiene siete campos, anualidad, --> temporada, tipo cultivo, área y producción, dale ok nuevamente, --> sí, pero no, pero es que el dato de entrada viene entero, creo que el problema es en --> la salida, vete al segregated, está leyendo un dato mal, --> hay un dato que está leyendo mal, es decir, nuevamente, mira la salida un --> momento, el run job, dale click en run job, o sea, e intenta convertir, --> ejecuta ese jocule, por favor, que es el que tenemos problemas, ejecuta ese --> específicamente, para volver a ver, él intenta convertir un, sí, está --> pasando el interior, pero no hay problema, --> si no hay problema ahí, --> pero qué raro que tengas eso ahí, ahí está subiendo al hud, --> sube para ver, pero es que ese 1254, bueno, en teoría, él intenta --> convertir ese string a numérico y el problema es el separador, como tú dices, --> pero no sé de dónde está tomando ese 1254, no sé si el orden que lo tienen, --> deja revisar el orden, no, en el input, muéstrame el esquema del input, --> por favor, lo comparo con el mío que tengo acá, --> un momento, --> no, yo creo que está igual, y el separador lo tiene en coma, cierto, --> producción, tienes un hit, un momento, a ver, --> un momento, revisa para ver, --> cambia la doble un momento, para ver, yo creo que tenía doble al final, cambia ese --> doble, sí, sí, por el, no, y el otro, también no, los dos, los dos, los dos, --> sí, sí, es doble, es doble, porque es que hay unos datos que trato de lo que pena, --> pensé que lo tenía entero, cámbiate a doble ese señor, sí, es doble, --> y vuelve a ejecutar, por favor, ahora sí, el jocuno está perfecto, dale yes, sí, dale yes, --> por favor, no, ya tuvo que agregar, dale doble clic ahí, tuvo que cambiar automáticamente, --> si no está mala herramienta, tuvo que haber cambiado doble, listo, cambia doble, dale ok, --> y ejecuta, cualquiera de los dos, dale entonces, bueno, ejecutamos el interior, --> dale para ver, bien, este lo que va a incluir, pues, son nuevos ejercicios, --> pero vamos a agregar un nuevo componente, que es tcmail, para enviar un email con los --> datos que usted quiera, en el formato que usted quiera, no hay ningún problema con esa --> parte, vamos y agotamos un poquito, vamos a crear una carpeta en axa llamada ejemplo --> correo, ahí subió, vamos a ver, sí, efectivamente era que era doble sí, vete a tu browser, --> por favor, y deberías tener, ahí lo tienes, ahí tienes, producción por distrito, --> lo tienes ahí, listo, perfecto, entonces sigamos, sigamos entonces, vamos a agregar --> aquí una nueva carpetica, ejemplo correo, perdón, fue un job, para que le quede esto --> organizado para si necesita, ejemplo correo, ejemplo correo, y cree aquí un nuevo job, --> que se llame lo siguiente, job, producción por distrito y anualidad, o sea, vamos a --> hacer ahora que nos muestre cuál es la producción por distrito y por año, y --> agregamos nuevos componentes, darle aquí finish, si deseas para hacer esto más --> rápido, cópiate los componentes del último que hicimos que es obtener producción por distrito, --> por favor, esos componentes no sirven de mucho y ahorramos trabajo ahí, --> copiamos los componentes de el último que hicimos que fue obtener y los pegamos en el --> por favor, deja nada más esos tres componentes, del último job, que fue obtener distrito --> producción, obtener producción por distrito, perdón, cópiate y nada más, después que lo --> copies, no, se llamaba obtener producción por distrito, el último que hicimos que --> llamamos obtener producción por distrito, bueno, el último fue el integrador, pero antes --> fue de eso, fue el penúltimo, job o obtener producción por distrito, lo pegas y nada más --> dejas el template job, el connection y el input, para repetir nuevamente la parte de cómo se hace --> para la agrupación y hacer cálculos, el aggregator, borre lo mítico para hacer lo nuevo para allá, deja nada más los tres, eso nada más, --> vamos a agregar un nuevo, nada más de esos tres, ya todo va por aquí, regálenme cinco minutos y busco un poquito de agua que se me acabó, ya vengo, --> bueno volví ya, seguimos, la diferencia que digo, sígame, este no, no lo, cuando me la confesión del anterior no he hecho más nada, no sé si, ah listo, perfecto, voy contigo, --> quemarlo, voy contigo Mauricio, un momento, me espera un momento, listo, esperate, aquí tengo el de Gerardo, Mauricio, está bien ahí, está bien, vamos a ver si no funciona, ah ok, elimina eso que está ahí por favor, --> elimina todo lo que está ahí o no sé si cambiamos el nombre, listo, agrega uno nuevo, te digo cuál es el esquema, agrega, no, dale más allá abajo, el más de abajo, --> primer se llama estado, enter, otro, distrito, otro, anualidad, colocalo, el tipo entero este, anualidad, tipo entero, temporada entera, temporada, temporada es string, es nada más anualidad, temporada, --> tipo de cultivo, ese también es string. Otro, área de tipo doble y producción es de tipo doble --> también. Y producción es de tipo doble. Listo, ese es el esquema. Bueno, por ahí vamos, oíste? --> Dale enter ahí. Acostuma a darle enter porque después no te lo coges adentro. Listo. Cierro aquí, --> entonces vuelvo acá. Vuelvo a mi máquina que sería esta de aquí. Listo. Ok, vamos a ver. --> Vamos a agregar los siguientes componentes ahora. Vamos a agregar un componente de tipo --> aggregated. Vamos a agregar uno que se llama tshorted, tshortrow. --> El tshortrow parece que no está instalado. Instálelo por favor. Unload. --> Agregue un componente de tipo tfile. Output delimited para que el archivo me lo cree, --> ya le digo para qué me lo va a crear acá en tfile. Output delimited. --> Delimited. Y agregue un componente que no lo hemos visto que es tsenmail. Tsen de enviar --> en inglés, mail. Tres componentes. Instale los componentes que hagan falta. En este caso --> el tsenmail no está instalado por defecto. En la parte verde no sé quién. ¿Me hablo, --> Mauricio? Sí. Gerardo, vamos contigo, Gerardo. Dale doble clic ahí, Gerardo, ahí. Y dale --> clic en el instalar ahí, listo. Y descarga los drivers necesarios para que pueda funcionar. --> Listo. Perfecto, listo. Entonces, si deseas, pues agrega. Vamos a ir configurando componentes --> por componentes entonces. En primer lugar, mire lo que me piden ahora. Es como si fuera --> un group by. Me piden ahora que muestre lo mismo pero ahora por distrito y por año. --> ¿Significa esto como si fuese aquí año? Agrupo por año y acá subo año. Me quedaría así. --> Y por distrito y por año. Sería lo que estoy decidando. Entonces ya sabemos. Listo, --> vamos entonces. Vamos a conectar el THDF input con el T-aggregator, por favor. --> Y configuremos el T-aggregator row. En el group by, según la analogía que hice, --> debería ir distrito y anualidad. O sea, año. Entonces, en el output voy a agregar dos --> columnas. Primera columna. El orden es importante porque si le cambia el orden, --> no te da igual. Voy a agregar aquí entonces. Primero, perdón, columna de salida que no --> le he agregado. De columna de salida necesito el distrito, mire lo siguiente, distrito, --> anualidad y total producción. Total, underscore, producción. Y esto lo voy a colocar de tipo --> doble. Y tienes cómo lo llamas tú? Cómo lo llamaste? Después tiene un nombre diferente. --> Muestra para ver. Voy para ti. ¿Quién me habló? Julio. Sí. ¿Quién me habló? Alito. --> Julio, voy para ti, Julio. Muéstrame tu esquema, por favor, de entrada. Ah no, --> entonces club gear. Porque tú usas el club gear, es club gear. Es el que está tirado por este lado. --> Y listo, créate ahora la nueva variable que es total. Sí, lo que tú tienes, tú lo tomaste --> directamente de allá de la fuente, del esquema original. Oye, entonces, por aquí. Alito. --> Ah, una propuesta, me fijo en tu input. ¿Quién me habló? Gerardo. Sí, vamos para ver. --> No, está bien, Gerardo. No le dales. Lo tienes ahí, mira, lo tienes entero. Está bien. --> Dale ok, dale ok, por favor. Vete a tu, te agregué interrupt, por favor, si está mal. --> Dale ok ahí, dale te agregué interrupt. Ah, pero primero acuérdalo. Acuérdalo, --> porque si no, no, después no sabe la entrada. Listo, men. Perfecto. Ahora, --> espera un momento. Ahora dale en editar esquema, por favor. Y tu salida a la siguiente. --> Tira para la salida distrito. Y tira anulidad para el lado derecho. Agrega una nueva columna --> que se llama total producción y la va a definir de tipo doble. Dale enter ahí, --> por favor, es que enter, enter. Ok. Ahora, en tu output column, vamos por ahí apenas. Listo. --> Voy por aquí. En el output column, el orden importante. Primero entonces agrupado por distrito --> y después por anualidad. O sea, agregue dos campos. Distrito y anualidad. O el orden --> importante. Si inviertes el orden, no te da igual. Y ahora, como columna de salida, --> dale click acá abajo. Y es lo mismo que el anterior. Siendo que ahora va a ser, bueno, --> aquí coloco suma. Y voy a sumar el área. Y ese componente quedó listo. Alto seguido, --> va a conectar el T-aggregated con el T-shortrow. Esto es lo que va a hacer el que hace T-shortrow. --> Te ordena la entrada de un conjunto de datos. No, porque para el suma es independiente si --> chulea o no chulea. Esto es más importante cuando saca un promedio. Si tiene en cuenta --> o no tiene en cuenta los números para dividir entre el número de elementos. Entonces ahí no --> distrito es tipo string. Dígale que ese distrito es de tipo alfanumérico. Y ya usted decide si se --> lo muestra ascendente o ascendentemente. Ahí por defecto dice ascendentemente. Ah, --> porque este campo hay que especificar que tipo es. Es alfanumérico. Entonces tiene que colocar, --> si fuera numérico o D, pues coloco dependiendo del tipo. Ese viene de alfanumérico. Y ahí --> si es si lo deseas ascendente o ascendente. Pues ahí puedes agrupar. De igual que un --> other by yo puedo hacer por varias colunas. Si yo quiero, pues puedo agrupar de hoy. --> Clic aquí y digo que voy a agrupar también después por anualidad. Y anualidad es numérico, --> no lo cambio. Lo dejo ahí. Ya tú decides en los tipos de ordenamiento. Primero se ordena --> por distrito y después si tengo distrito igual se ordena por anualidad. Es como --> Continuamos entonces. Vamos a comentar ahora el test show row con el test file output del --> limite. ¿Por qué voy a agregar esto? Porque voy a juntar en el correo que quiero enviar el --> resultado. Ok, por eso es que lo voy a hacer así. Entonces, dele doble clic aquí al test --> show row. Ah no, dale clic entonces aquí. Sale distrito, se que sale distrito efectivamente, --> pero dale clic aquí y nuevamente en el sale distrito y te va a aparecer un combo vos. Me avisa --> si no sale. Sí o no? Sí. Dale enter, dale enter porque a veces se queda ahí. Es un problema --> del table de llave. Vamos ahora, conectamos el test show row con el test file output. --> ¿Por qué? Ya expliqué. Es decir, quiero mandarle como adjunto el resultado. Entonces voy --> a crear un archivo a nivel local y lo voy a mandar. ¿Listo? Entonces mira lo que voy a hacer --> aquí. Voy a hacer aquí un test file output. Voy aquí el test file output y voy a quitar todo --> este señor que está aquí y voy a colocarle. Qué pena, siempre se me olvida. Voy a importar --> los contextos porque ahí tengo la ruta. Importo el contexto antes. Importo el contexto aquí. --> Aporte por favor los contextos. Voy a hacer lo siguiente aquí entonces. Voy, listo. En aquí --> en el file name, ya aburré la ruta, voy a colocarle context ruta más y voy a colocarle --> distrito, perdón, producción, lo voy a llamar producción, underscore por distrito, underscore --> por underscore anualidad, punto CSV. Si desea conservar el separador de coma, lo deja o si --> no lo cambia, yo voy a cambiarlo para que esté todo estandarizado con coma. Cambio el --> hígado que incluye el hígado. Por favor, ahora si terminó la configuración, conecte el test --> file output con el test send mail. Por favor. Y ahora vamos a configurar el test send mail. --> Dale doble sídicame. No, no, normalmente no. Si no es cuestión ya de gustos. Es cuestión --> de gustos, sí. Dese cuenta que he hecho de varias formas. Una forma, colocamos todos los componentes, --> lo unimos y después lo configuramos. Esta vez estamos uniendo y uniendo y después configurando. --> Al final es gusto de cada quien, cómo le sale mejor. Vamos con el test send mail que es lo --> último que nos falta por configurar. Listo, vamos aquí. Voy a plantir este señor y me pide --> por favor a quién le vas a enviar el correo. Pues envía solo una cuenta tuya personal. Yo --> enviarle a mi cuenta personal. Aquí voy a colocar mi cuenta personal. Coloca la tuya. --> Este hacia dónde va? Jaime Mendes alandete arroba gmail.com. Ese es mi correo personal. --> Sigo entonces. Ojo, que debe ir entre comillas dobles porque va a ser un stream en java. --> Acto seguido le pide el nombre del correo que va a enviar a esa cuenta. Para esto, --> por favor, váyase a la carpeta que tuvo que haber descargado. Yo la tengo aquí en Don Loas. --> Sí, no, el suyo. Al quien le va a querer que le llegue. Ese es el remitente. A quién le va a --> llegar el correo. Por favor, el suyo. Espera un momento mientras coloca su correo. --> Váyase a su carpeta que descargó y hay una subcarpeta que se llama credenciales --> correo. Entonces vamos aquí. Y dentro de credenciales va a encontrar un archivo llamado --> también credenciales y le aparece el nombre de la cuenta. Entonces, copie esa cuenta por --> favor y la reemplaza por la que está ahí por defecto. Ojo, debe ir entre comillas dobles. --> Aquí me queda entre comillas dobles la cuenta. Listo, lo que viene ya es formalismo. Si es con --> copia a alguien con copia oculta, eso lo vamos a quitar de ahí. Por favor, --> quítese con copia y quítelo de con copia oculta. ¿Por qué no vamos a hacer eso? --> Dele el subjet del correo. Dice entonces testing. Voy a colocarle aquí testing job curso. --> Lo que usted quiera. Testing job curso AXA. Voy a colocarlo así. Configura el mensaje que --> viene una palabra que parece que la gente lo tendría al revés. Por favor, no respondas. --> Parece que le llena. Por favor, respondes. Por favor. Sí, pero sí, pero si le das aquí enter, --> da entre las comillas dobles, puedes seguir aquí. Ah, bueno, perdón. Era un enter, --> perdón. Si quieres un enter, tienes que darle aquí entre las comillas dobles, --> como es Java, y sigues escribiendo. Si quieres en la misma línea o en una línea diferente, --> porque al fin y al cabo con el slash n se da cuenta que hay un salto de línea. Slash --> n, oíste. Aquí voy a colocar aquí probar salto de línea. Debería darme un salto de línea y --> probar salto de línea. Slash n para que me salte. Ahora, para formateo, negrilla, --> creo que le agregas las etiquetas para HTML. Me encierra si él te la coge. No, no lo he --> hecho. Bueno, pero le decía quiero agregar un archivo, ¿OK? Entonces, en el attachment, --> por favor, dale click. Y para evitar cualquier cosa, bueno, aquí guarda antes. Vete a la --> configuración de tu file output y cópiate la ruta del te file output, por favor. La --> ruta que hiciste aquí, cópiala y la vas a pegar justamente en tu attachment. Es decir, --> donde dice new line, voy a pegar exactamente como copié ahí, voy a pegar acá. Enter. --> Aquí te pide el encoding. Por defecto, ¿Cuál le aparece aquí? Bueno, déjelo default. --> Va de 74 si lo que hago es... Recuerda que va de 74 lo que hace el formato que yo convierto --> el archivo en un string. Eso es lo que hace que te pesa más el acunto. --> Bueno, configuremos, por favor, los parámetros del servidor de correo. El servidor de correo --> que tiene esa cuenta es Gmail. Por defecto, la mayoría se llama exactamente igual. Por ejemplo, --> el de Gmail se debe llamar smtpgmail.com. Entonces, el smtp de Gmail cambia la palabra --> provider por Gmail. Perdón, en minúsculo. Y me regala un momento y busco el servidor de --> correo de Gmail. ¿Cuál es el puerto que escucha por defecto? Un momento que se me escapó. --> Un momento, por favor. Servidor de correo Gmail puerto 485 para SCL. No, no lo vamos a --> escuchar por SCL. Y otro por TLS. Entonces, dele, por favor, cambia el 25 por 587. Me --> espera un momento aquí. Reviso aquí algo. Como esto es TLS, por favor, chulé. Aquí --> me tocaría activar el SCL. No sé si con los dos me funciona. Voy a ir para ver. Recuerde, --> mire, para que no tenga. Primero, configuré el smtp de juegos, que debió quedar ahí, --> smtp.gmail.com. Perdón, ok. ¿Por dónde vas? Dime. .gmail.com. Eso tiene ya. Gmail.com. --> Deja, miro tu pantalla y de pronto algunos que se quedó listo, lo ve con tu --> Gmail. Cambia ese provider por Gmail, exactamente. Gmail. Y ahora el puerto que --> escucha es SCL 587, 587. Claro. Efectivamente. Por ejemplo, por favor, ¿qué pena contigo, --> Julio? Activa donde dice Star TLS Support. Aquí al lado de el Star es TLS. Esa que tienes --> ahí. Activa esta que tienes aquí. Eso, por favor. Un momento, por ejemplo, el de ¿Cómo --> que se llama el servicio de correo Microsoft? OneDrive. No, se llama OneDrive. ¿Cómo que se --> llama el servicio de correo Microsoft? Se me escapó el nombre ahora. Bueno, no, --> Outlook. No, es Outlook. Outlook OneDrive es el empecemento en la nube. Sería el drive de --> Google, por ejemplo. Hace una analogía. ¿Cuál sería? Bueno, puerto. Outlook. Smtp. Voy a --> colocarlo aquí para decir si es el mismo. Smtp. Smtp. Sí, efectivamente. Aclaro, la --> pregunta que me hizo creo que fue Liliana. No da la casualidad que lo tiene en los mismos --> puertos. Eso es para el correo de entrada. O sea, el correo que va a enviar. Para el --> correo de salida, lo mismo. Donde esté. Problema del correo de entrada. Bueno, --> terminemos la configuración, por favor. Aquí en la cuenta vuelve a colocar la --> cuenta que colocan credenciales entre las comillas dobles. Por favor. Y por --> último, recuerde lo siguiente. Yo creo que la mayoría se estandarizó de esa forma. No te puedo --> decir que todos sean así. Pero si hablamos de los más conocidos, Gmail, Aulo o cualquier --> correo que tú veas por ahí. Normalmente para que una aplicación de un tercero pueda enviar --> un correo desde la cuenta, tiene que generar un key para esa aplicación. Porque no es el --> correo tuyo, no es la clave de tu correo. Por ejemplo, si noto aquí yo tengo la clave, --> váyase nuevamente a credenciales, por favor. Esta clave no es la clave del correo. Es la clave --> que generé para que una aplicación, en este caso Talent, se pueda conectar con esa cuenta --> y pueda enviar correo. Entonces tiene que estar pendiente que cuando vaya a usar alguna --> cuenta, verificar si la aplicación es de tercero, se van a loguear con un password --> diferente. Si es así, tiene que generar entonces un password específicamente para esa --> aplicación. Doy aquí control C y pega, por favor, entre las comillas dobles que te quede ahí, --> entre comillas dobles, pega ese password que está ahí. Ok, todavía no ejecute, por favor. --> Sí, cuando diste aquí, te aparecieron unas comillas dobles, si te das cuenta. --> Mételo ahí entonces en todo el centro, por favor. --> Y listo. Entonces, aquí todavía no ejecute, por favor. --> Para este job, por favor, voy a que guardar por si acaso, agreguemos un T-Pos job. --> Y este T-Pos job, lo que va a hacer es que va a borrar este archivo que creamos en este punto. --> Entonces, vete aquí y busca una opción que se llama T-File Delete. --> Conecta tu T-Pos job con el T-File Delete y busca la ruta donde se creó, --> donde se va a crear este archivo. Copio completamente, control C, y la voy a pegar en el T-File Delete. --> Te voy a aquí guardar. Voy a cerrar los demás jobs que tengo por ahí que me están haciendo ruido. --> Un T-Pos job primero. Seguidamente le agregas un T-File Delete. --> Y en el T-File Delete, listo, vete entonces a tu T-File Output delimited y copia la ruta. --> Listo, un momento, un momento. ¿Quién me habló para guiarte mejor? Mauricio, --> me cuento tu máquina para guiarte mejor porque después de pronto te hago perder más. Listo, --> un momentito que se me perdió aquí. Se me perdió el... Un momento, ya, un momento que se me... --> Está ahí en el room, ahora sí, pues que voy a cerrar esta ventana. Mauricio, voy por aquí, listo. --> Listo, vete ahora a tu T-File Output delimited ahora. Tu T-File Output delimited, --> T-File Output delimited, ese que está ahí, por favor. Cópiate la ruta esa completa y ahora --> entra la confesión del T-File Delete y sobrescribe esa ruta con la que copiaste, ¿sí? --> Bueno, vamos a ver qué pasa. Listo, creo que ya listo, no hay más nada. Voy a ejecutar el --> suyo, ejecute el suyo, para ver cuántos errores nos salen ahora. Cuando salen un par de errores, --> vamos a ver. Verifico para ver, dase cuenta que aquí no tengo el que quiero. Yo producí... --> Ah, no, sí, este que quiero ejecutar. Voy a ejecutar entonces. Listo, perfecto. ¿Quién --> está ahí? Entonces, voy aquí a tu máquina, anda, aquí está, listo. Vamos a ver. Entra --> a tu File Output delimited que está en la parte de arriba, tu File Output, el que --> está arriba, en el S que está ahí, por favor, S, doble clic. Cópia si está --> mal la ruta esa porque es donde va a quedar el archivo y vete a tu T-File Delete --> y sobrescribe esa ruta que tienes ahí por la que copiaste. Procede a ejecutar, por favor, --> y vemos a ver qué pasa. El caso mío, listo, va por... Qué raro que tiene. Espera un momento, --> que no sé si me están viendo en correos ahí porque está siendo raro. Sí, sí, un momento, --> un momento, un momento, un momento. Cáceles, cáceles yo, que me están viendo. Cáceles, --> cáceles yo, por favor. Porque ahí lo uní al T-File Output y me va a enviar como cincuenta --> mil. Acá me acasó a enviar diez, déle cácelar, por favor. La locación es que --> cada fila me va a enviar un correo, mía colegio. Tuvo que tener como... Bueno, --> me acasó a enviar trece acá a correo. Qué pena, desconecte este señor de acá, --> porque si no cada fila que está entrando ahí, quite este señor acá y quiero --> enviar lo siguiente. Qué pena. ¿Cuántos correos? No sé si lo ejecutó, pero a mí me mandó trece correos. --> No, claro, ahí está mal. ¿Cómo haría? A ver si recuerda. Quiero que terminado este --> subyong me ejecute el tcmail. ¿Qué hago? ¿Cómo hago? Mira, mira el problema que tenía, --> el problema que se formó. Bueno, está bien que se haya formado en tiempo real. Lo --> tenía sibe. Entonces, cada fila que va agregando aquí, me la estaba mandando como --> un correo, ¿cierto? Entonces no quiero eso, quiero que envíe nada más un correo. Suelto --> aquí este señor y voy aquí a agregar esto. Quiero que terminado este subyong me ejecute --> este tcmail. ¿Cómo cree que debería ser ahí? Tengo que unir. Quiero manejar este como si fuera --> un yong, un subyong, perdón, y un subyong diferente. ¿Cómo hace? Va al primer elemento --> que une al subyong inicial, y esto lo habíamos hecho, y escoge donde dice trigger un subyong --> ok. Entonces, ¿qué va a pasar aquí? Que cuando termine este subyong es que va a ejecutar el --> siguiente subyong, que en este caso sería enviar el email, porque si no nos envió, --> a mí me envió tres archivos. Voy a borrarlos aquí porque si no una locura me formó aquí. --> Voy a eliminar esto. --> Listo. --> Bueno, ahora sí voy a ejecutar, a ver qué pasa. --> Ve con esta la cazalarta, ¿oíste la cazalarta? ¿Oíste? Me mostraré quién. ¿Quién es? --> Mauricio, ¿no? Yo estaba ejecutado hace entonces. Te tuvo que haber mandado 42, --> me parece a mí. Ah, no, pero espérate un momento. No, pero espera. No, pero espérate, --> espérate un momento, antes que siga. Primero, porque ahí tienes un problema ahí. Une --> primero el subyong de arriba, el subyong de arriba, únelo. ¿Cómo lo unes? --> Ubícate en el HDFS input, le das clic derecho y le dices que se ejecute trigger --> on subyong okay y ejecutas y lo unes con test email. Espera un momento, --> antes que sigas. Voy a probar el mío para ver un momento. No te dejes no ejecutes. Voy --> a enviarme un correo. Ah, este archivo ya existe, perdón, qué pena. Aquí lo que pasa --> es que ya lo había creado. Voy a quitarle la restricción esa, aquí el trofe y voy a --> volverlo a ejecutar. Un momento, yo lo ejecuto para ver. Ante, porque de pronto --> la configuración novedad le va a llegar esa cantidad de correo. Ahí no, no preví eso. --> Vamos a ver. Bueno, ahí empezó. Es ya el de yo del HDFS. Listo. Voy a ver, tuvo que --> haberme llegado uno un momento. F5, aquí está. Me llegó un correo y me llegó aquí --> el CSVS correo. Ahí me está mostrando la novedad por cada uno de, por año, vea. --> Perdón, vamos ahora sí Mauricio, vamos a ver contigo, vamos a ver. Vete a tu, --> morra los correos que ya te creó, por favor, por si acaso, y vamos a probar tuyo. Listo, --> perfecto. Voy a tu máquina por si acaso alguno tiene más o menos la misma confesión. --> Déjame revisar antes, por favor, antes que lo ejecute. Yo lo veo bien. Ejecuta, --> por favor. Ah, listo. Sí, sí. Vete a Tefal output porque si no te hace el error. --> Tefal output delimited y en el advanced setting, por favor, advanced setting, --> dale click en que throw. Quítate el throw. Ese que está marcado ahí, listo. Ejecuta --> ahora. Listo, está listo, listo, listo. Verifica para ver tu correo. Allá lo tienes --> ya conectado, imagina, y me confirma si te llegó. Listo, perfecto, eso funcionó --> perfectamente. Listo, verifique por favor si ya llegó para allá. Verifique para ver si --> le borró el archivo. Quiere decir que en la carpeta QA no puede estar ese archivo que --> se llamaba eh producción distrito por año. Confirme por favor, yo voy a confirmar, ya --> llego por allá en un momento. No debe estar en QA, no debe estar porque yo lo mandé --> a borrar. Ten, QA, y efectivamente no está. Bueno, voy con Ana entonces. Ana, voy contigo. --> Bueno, vamos a ver. Ah, listo, Ana, lo que pasa es que por defecto él, si --> ya está creado, manda una sesión. Entonces, vete a tu Tefal output delimited, --> si ya está amable, Tefal output delimited, y en el advanced setting de ese, de ese componente, --> advanced setting, destruea la opción throws, y ahí se nos olvidó colocar UTF8, pero bueno, --> ya listo. Ejecute por favor. No, no, no, no cambia porque eso está en inglés. --> Ese hizo es perfecto para inglés. Ejecute por favor y verifiquemos a ver si le llega --> el correo. Listo, ya empezó, está leyendo, está progresando. Teces mail, muestra que error --> tiene. Sube para ver, va a hacer favor, suba, suba. Dice, causado porque no encontró el archivo. --> Ah, muestreme su Tefal output un momento, copie ese, esa ruta por si acaso no la tiene --> ya, copiela. Váyase a su, teces mail, váyase a su send mail, por favor, send mail. No, --> él la tiene. Eh, si está amable, váyase a su cua, a su carpeta de cua. Eh, el archivo no lo --> creó. No está creado. Muestre nuevamente, muestre nuevamente a el Tefal output, por favor. --> Tefal output, por qué no le he creado el archivo. Context más ruta, en el avance, --> en el avance, por favor, va a llegar el avance. No, un momento. Ponga, desactive el --> teprayop y el teprayop. No, en el centro, en el centro, en el centro. Desactivar. Dígale --> su yo completo, así. Dígale su yo completo, su yo completo. Ese que está ahí. Wall, --> el otro wall. Wall su yo. Ah, sí, sí, ese, ese, sí, su yo. Creo que los dos debes funcionar, --> listo. Haga lo siguiente, vuelve a ejecutar nuevamente para ver algo. Ah, sí, lo que --> hace es que, dele, dele control z un momento, control z, control z. Vaya nuevamente al, al --> teprayop. Dile click derecho y escoge la opción mejor wall, que es entero. Wall, wall --> su yo. Click derecho. Wall su yo, por favor. Ese que está ahí. Entonces desactiva todo --> el, lo que haya de ahí para adelante. Vaya que desactivo. Ejecute nuevamente un momento, --> a ver, porque él dice que el archivo que iba a enviar de acunto no lo encontró. Eso fue el --> error que salió, a menos que haya otro problema de configuración que no vi. Bueno, --> listo, empezó la ejecución, va a leer de H2 y empieza a progresar con Big Data. Evidentemente --> es lento por memoria, nada más es un nodo. Listo, váyase a la carpeta cua un momento y --> ahí tiene el archivo. Listo, váyase entonces nuevamente a su T, a su T, same mail, --> same mail, same mail. Carajo, son hasta igual, no. Por si las dudas, copia nuevamente la ruta --> en el tefal output, la ruta. Váyase tefal output, bueno, no, váyase usted tefal output. Ah, bueno, --> ya lo vi. Listo, ejecute nuevamente, a ver, no veo cuál es el error ahí. Ah, no, pero espera, --> un momento antes. Creo que no cogió la configuración. Nuevamente, pegue, es que --> a veces tiene que ir a la inter, porque si no coge la configuración. Váyase nuevamente, --> e, pegue la ruta que tenía ya en memoria. No, pero, eh, listo, es así. Es la misma, --> ¿No? No es del ejecutar por a él. No, entonces entonces le perdió. Está él, cuando se pierde, --> está el lado derecho, el lado derecho, allá en lo último, está un como un, un, acá, acá, --> por acá, la punta esta. Hay un. A ver, eso. Acabo de cerrar la ventana. Si va el X de la --> ventana, baja por el X de la ventana, y tiene aquí un play. No sé si alcanza a ver acá mi --> pantalla. Acá en este play. Sí, la suya. Entra en dos novedales. Entonces, sí, de la esquina --> superior. Vamos a ver. Dale para ver. Sí, sí, sí. Dile para ver. Qué raro que ahí si no, no sé --> por qué no le está encontrando, si el archivo está ahí. Bueno, a quién más no le funcionó, --> a ver. O no le llevo el correo, pues. No te llevo el correo. Eh, listo, ya voy. Revisé su --> bandeja de correo si está amable Ana, porque no salió error. Ahí como que había algún --> carácter raro, extrañamente raro ahí, no sé. Y me confirma si le llegó. Sí llegó, con el --> adjunto, pero con el adjunto. Listo. ¿Qué me dijo que tuvo un pequeño error? Eh, Eduardo. --> Está ahí contigo, Eduardo. Vamos a ver, Eduardo, ¿Qué pasó? Dice. Décimal point. --> Muéstrame tu HDFS, imposible, estás amable. Muéstrame tu esquema, editar esquema, por --> favor. Tienes estado, anualidad, temporada, tipo de cultivo. Está bien, no veo ningún --> error en ese. Dale OK, por favor. Vete a tu T-agregated row para editar esquema. Tienes --> estado, anualidad, tipo, área, doble. Listo, OK. Dale OK ahí. Vete a tu T-short --> row. T-short, un momento. Ah, eh, cámbiate ese production por área que fue que cogimos --> ahí. Cámbialo por área. Listo, vete a tu T-short row, por favor. Listo, ejecuta nuevamente --> ahí que, que si no sale mismo error, el later runo. No, ya está desactivado. No, déjalo --> así, déjalo así. Ejecutalo, no tomo. Déjalo así, ejecutalo para ver si, porque --> error lo tenemos ese en el subyord de saber qué sale. Como que producción había --> un problema. Revisa tu bandeja de correo si eres tan amable. Hemos hecho presiones --> con área, ¿No? Hemos hecho con producción, con que producción tiene algún dato extraño --> ahí. No sé de qué tipo. Me confirma Eduardo si te, si te llegó el correo. ¿A qué --> cuenta lo mandaste? Mira la cuenta. Ah, perfecto, listo. Ahora sí, listo, perfecto, perfecto. --> ¿A quién más? Bueno, hacemos un pequeño break de 10 minutos y seguimos ahora con --> otros ejemplos. Entonces, agrega más componentes. Sí, dígame. Sí, dígame. --> ¿Estás bien? Sí, señor. Sí, señor. También es así. Sí, voy a hacerlo caro. --> El problema, bueno, veámoslo el inconveniente original. Si lo colocaba de este lado, me --> enviaba en correos. Y entonces, de la forma que tú estás diciendo, te enviaría un correo. --> Exactamente. Sí, señor. Daría lo mismo. Daría lo mismo al final. Bueno, dejamos --> hasta aquí y seguimos en 10 minutitos entonces, ¿OK? Tome algo y volvemos en --> Bueno, continuamos, pues. Estamos conectados, ya estamos casi en la hora del almuerzo. Seguimos --> entonces. Bueno, pertenece a lo siguiente. Voy a, voy a hacer este ejercicio simplemente --> para que entienda el componente. Este ejercicio que tenemos aquí. Por favor, --> sácale una copia. El de ejemplo, correo, por favor, clic derecho, por favor, copie y --> pégalo en la misma carpeta, por favor. Cambia el nombre a versión 2. Editar. Versión 2. --> Versión 2. Listo, por favor, edite. Abre este archivo, por favor. --> Y por favor, entonces, no sé si ya está en esta ventana. Cambie, borre estos dos --> componentes, el T aggregated y el T short row, por favor, cámbielo. Por un T --> aggregated shorter, o se llama T aggregated, se me escapó. Este T aggregated shorter row, --> por favor. O sea, une los dos. Este componente une la parte de agrupar y ordenar al mismo --> tiempo, pero tiene una pequeña diferencia. Entonces, una por favor aquí. --> Y una, por favor, acá el T5 delimited. Y explico, entonces, lo siguiente. Por favor, --> ¿qué es lo que hace este componente? Este componente, pues, une la parte de --> agrupamiento y ordenamiento en uno solo. Pero este componente es para eficiencia. --> El otro componente, el T short row, me da más flexibilidad, que ya le digo por qué. Por --> este componente. Y ese componente, ya se cuenta que este componente es muy parecido al otro. --> Configuremos lo que ya sabíamos. Aquí vamos a ordenar por distrito y por, perdón, --> no sé qué coloque de entrada, perdón, qué pena. Ya estaba configurado ya. Distrito y anualidad. --> Vamos con esto que está aquí, que me salga la entrada, que consigue la entrada con la, --> que no sé por qué me desordenó esto aquí. No sé si fue porque copié y pegué. --> Ve lo siguiente. Aquí la columna salida distrito con columna entrada distrito, --> anualidad con columna entrada anualidad. Y la columna salida aquí, por favor. Entonces, --> sería total, creo que quedó con la confesión anterior, me parece a mí, --> total producción. Y aquí estaba Zoom. Y aquí estaba Aria. Por favor. Perdón. --> Sí, yo creo que vendría. Muéstrame para ver, de pronto es que yo no sé por qué me tomó esa --> confesión, no debió tomarla, pero vamos a ver para ver. ¿Quién me habló? Mauricio. --> Gerardo, vamos Gerardo, para el tuyo, para ver de pronto a ti te. Sí, sí, no, también, --> también, también, también, también, también. Listo, pero si está bien, está bien, --> no hay problema. Vamos a lo último entonces y vamos a la diferencia que hay. Listo, --> el problema del terror del vai no es tan fácil de solucionar. O sea, --> me lo explico de esta manera. Voy a hacer aquí un diagrama, aquí hago un diagramita aquí. --> Debié hacerlo de este lado. ¿Qué peor? Debié hacerlo de este lado, acá. Un momento. Listo. --> El problema es que, digamos, que usted quiere hacer lo siguiente. Esto no es tan fácil ni --> siquiera a nivel de base de datos. Bueno, fácil no. Lo que pasa es que lo complicado es --> el rendimiento. Veamos lo siguiente que aquí veo que no me cargó los componentes. --> Un momento. Sí, supongamos que tú tienes lo siguiente. Select. --> Aterrico from empleados. Order by nombre. Ahora te coloco esto más grande. Nombres. --> Sí, vamos a suponer. Entonces, recordarás lo que te dije yo. Normalmente esto está en un --> data files. Esos data files no necesariamente están decentes. O sea, juntos pueden estar --> separados en diferentes partes. Y el problema es que para hacer el ordenamiento él tiene --> que ser, dependiendo de la de la de la columna como tal, tendría que subir todos estos registros --> a memoria principal y hacer el ordenamiento. Por lo tanto, si la tarla es muy grande, --> un order by te puede costar mucho el nivel de tiempo de respuesta. Hay que saberlo --> cómo hacerlo. O colocar algunos elementos que te puedan ayudar a mejorar ese order by. Listo. --> Entonces, este señor viene con esa idea. Notarás que aquí, cuando vengo a la --> configuración, esta configuración que tengo acá, se me perdió la pantalla. Esta de aquí. --> Espera que se me perdió mi pantalla. Dejame que la cerré. Listo, aquí. Aquí te pide un --> import road common. Ese que está ahí. El cantidad de filas de entrada. ¿Qué es lo que --> hace él ahí? Lo que te pide es que le des un parámetro. Por lo menos que le des el --> número máximo o el número que tiene la de registro que tiene lo que ordenar y con él --> hace un organismo de tal forma en saber qué tanto va a subir a memoria principal y cómo lo --> sube. Simplemente esto es para eficiencia en order by. Yo puedo colocar aquí cualquier número. --> 500. Entonces, a partir de ese 500 él empieza entonces a generar un algoritmo. Normalmente --> lo que deberías colocar ahí es el número. El número que tiene la cantidad del archivo de --> entrada. Ahí vas a colocar el máximo de la cantidad de registro que tiene. Y con eso él genera --> un algoritmo para hacerlo más eficiente en order by. Eso es. Ahora, esto es para eficiencia, --> pero pierdo flexibilidad. Porque ahora lo que hace es... Dete cuenta que aquí no hay una --> especificación para decir qué columna quiere ordenar. Entonces lo que hace él es que ahora, --> por la primera columna que está aquí en el group by, ordena. Y sigue ordenando por las --> siguientes columnas que tiene en el group by. En este caso ordenaría de forma ascendente. --> Ya no puedo configurar que sea ascendente. Ni tampoco puedo ordenar por una columna diferente --> a la que estén ahí. Ya ahí pierde flexibilidad, pero gana eficiencia. Eso es lo que hace nada más --> esta parte. Si quiere lo ejecutamos, pero le va a llegar un correo nuevamente. Si quiere, --> se activa esta parte del correo. O si quiere, pues hace la prueba y ejecuta este señor, --> versión dos. Voy a ejecutarlo para ver. Me debería llegar otro correo. Debería --> funcionar exactamente igual. No creo que haya una diferencia, menos que me haya equivocado en --> la configuración. Está un poquito lento. Creo que ejecuté algo que no era. No sé, --> porque me dio... Así es, ejecuto este. Ah, no, ejecuté el anterior, qué pena. Está --> ejecutando el anterior. Este en versión dos. Un momentito, un momento, un momento. --> O hasta más lento. Debería dar lo mismo. Ahora si tengo versión dos, voy a ejecutar entonces. --> No creo que le hizo... Sí, ahí está la misma cantidad de... Es lo mismo. La única diferencia --> que va a haber... Perdón, vamos a ver. No vi el chap, voy a ver el chap. Sí, claro. Ahí recuerda --> que hice por distrito y por año. Ahí tienes distrito Nicobars en el 2000, la producción en --> el 2001, 2002. Exactamente. Listo, sigo con ese para matar este ejemplo aquí, --> ya que aprovecho, vamos a lo siguiente. Aprovechando la imagen que me mandó aquí Mauricio, voy a tomar --> esta imagen que está aquí. Mira lo que quiero hacer. Quiero sacar el máximo de producción por --> año. Es decir, que el máximo de producción por año, o sea el año que más produce en Nicobars, --> ¿qué año fue? ¿Me ayuda ahí por favor? Fue el año 2004, si mis cálculos no me fallan, --> ¿sí o no? La idea es esta. Vamos a colocarle para que... Algo que le pueda ayudar mucho la --> herramienta en SQL es un poco más complejo que hacer. Voy a lo siguiente. Supongamos que --> tenga los siguientes datos. Tengo distrito, tengo año y tengo producción. Significa que --> en el distrito A, en el año 2000, voy a suponer que tuvo una producción de 10. El mismo distrito --> en el 2001, que es el reporte que tenemos actualmente, me lo da en 15. El A aquí en el 2002, --> supongamos que sea 10 nuevamente. Distrito B, supongamos que tenga en el año 2000 una --> producción de 15 y en el año 2002 una producción de 40. Quiero que me muestre entonces por --> distrito cuál fue el año en que más produce. Quiere decir entonces que el resultado me debería --> dar lo siguiente. Distrito, año, producción. En el caso del distrito A, como es el máximo, --> debe pasar una vez. A, el año en que más produce aquí fue el año 2000, 2001 perdón, --> con 15. Y el B, el año en que más tuvo producción fue, aquí me equivoqué en el año, 2001, --> 2001 con 40. Si me entiende cuál es la idea que queremos hacer. Esto con SQL no es tan sencillo --> de hacer. Hay que hacer pequeños subqueries para poder lograr esta parte. Entonces esta herramienta --> me lo permite muy fácilmente. No sé si entiende la idea de lo que vamos a hacer. ¿Sí? ¿Tiene --> claro? Bueno, entonces para hacer este tipo de ejercicio, por favor, hagamos lo siguiente. --> Vamos a copiar, vamos a copiar. Voy a mostrarle acá. Voy a copiar acá. Se me --> va a poner ese acá, perdón, es este de aquí. Listo, entonces, voy a copiar el de anualidad --> versión uno, control C, copiar, que me sirve copiar, y lo voy a pegar acá. Y le voy a --> cambiar el nombre, editar, es de la versión uno, que es la versión dos, que fue la última --> que hizo con él. Te agregué este short row. Producción por distrito de A. Voy a colocar --> aquí. Job máxima. Producción por distrito y anualidad. Y voy a quitarle el copy. Sí, --> el último. No, perdón, el de versión uno. El anterior. En el último agregamos un te --> agregé este short row. En este no, es el de versión uno. El que tiene un te agregé --> este y después un te short. Listo, vamos a darle aquí finish, por favor. Y abre el que --> se copió. Voy a cerrar este señor y voy a abrir el de máxima producción. Listo. --> Voy a copiar esto para que sea mejor, para que todos lo vean acá mejor. Directamente --> la máquina virtual. Bien. Voy a borrar esto de aquí. Este job, lo que me traje es --> esto de esta aquí. Pero yo quiero el máximo de producción por año. Entonces lo que voy --> a hacer es lo siguiente. Voy a quitar esta unión de este te agregue y te coge este --> te short row. Y voy a agregar otro te agregue y te row. Perdón, no ese short, sino --> te agregue y te row. Y uno el te agregue y te coge el nuevo. Y uno el te agregue --> y te nuevo con el te short row. Sí. Voy a tener un te agregue y te nuevo. Listo. --> Bueno, el te agregue y te row uno saca los datos en este formato, este de aquí. O sea, --> por cada año, por cada distrito y año va a sacar un valor. Te voy a decir que en el año 2000 --> producimos 10, año 2001 producimos 15, año 2002 produje 10. Y lo que deseo es que sacar --> desde cada distrito el máximo año que vendí. No sé si ahí me entendí o ya. ¿Cuál es la idea? --> Aclaro, aclaro, aclaro, aclaro. O hacemos así. El mundo me da la producción por año de cada --> distrito. Y ahora quiero por cada distrito cuál fue el máximo producción que tuve. No creo que --> salga. Ah, pero que no puedes garantizar ni lo siguiente. Mira, me parece interesante. Si le --> colocas al año max, te saca el año 2002, pero no fue el año que vas vendí. Porque el año que --> vas vendí fue el 2001. A sacarle más del año. Sí, vamos a ver. Si yo hago lo siguiente, --> me parece interesante. Si yo hago, ya me entendí. Si yo hago un select, me parece --> interesante la observación. Bueno, aquí dé cualquier cosa. Entiendo que lo que haríamos --> con este cuelgo sería un group by de distrito coma año. Distrito, aclaro, aclaro, distrito --> grupo by. No, que estoy pensando para ver si sale grupo by distrito año. Y te entiendo, --> acá le doy entonces y saco el máximo aquí. El max del total, ¿Verdad? --> Yo creo que sí sale así. Vamos a probarlo un momento para ver. Que venga, me pareció --> interesante. Vamos a probarlo aquí. Vamos a probar esta. Vamos a quitar el te agreguéste, --> que pena. Vamos a dejarlo como estaba anteriormente, control z, control z, control z, control z, --> control z hasta que llegue. Aquí. Pero es que si le doy aquí a max año, mira lo que --> me da. Si le coloco aquí max año, mira lo que me está dando. Me va a dar distrito, --> ¿Verdad? Exactamente, me daría dos mil dos y me daría, me daría quince acá. No --> cuadraría en los datos. Pero lo que me parece interesante es que si yo coloco este --> max, él va a sacar solamente un solo elemento. Pero no sé si el elemento que va a sacar --> es el primer, el primer registro. No sé, vamos a hacer la prueba un momento porque --> ahora quedé con la duda. Es más, si me va a dar. Sí, sí, va a pitar lo mismo, sí. --> Exactamente. Sí, porque él va a agrupar por estos dos y va a sacar el máximo como --> es solo elemento, va a darle el mismo. Sí, señor. No, pero, no, pero que recuerda --> que no puedes colocar una función de grupo word, lo máximo un having. Bueno, --> vamos a la idea, pero gracias, no, pero la sensación estuvo interesante porque --> ahí analizamos un par de cosas. Dejemos, qué pena, qué pena que lo había puesto --> usted en esto, pero vamos a ver. Dejemos aquí, aquí te quedaste, no, pero fue --> interesante porque aún analiza ahí varias cosas. Primero, mira, la idea --> cuál sería ahora. Tengo los datos así, ¿Cierto? Ahora, después que lo tengo aquí --> de cada distrito, voy a agrupar por cada distrito y voy a sacar el de --> inicialmente a quince. --> Si tiene la idea. OK, vamos a ver que estoy empezando a ver si lo podemos hacer --> diferente, pero vamos a ver, listo, vamos a acá, voy por aquí, vamos aquí al --> te agregue y te robo. --> Y le vamos a decir, oye, agrúpame por distrito. --> En el dos, estoy en el dos, un momentito. --> Saca toda la salida, por favor, todo lo que entra, sácalo. --> Y en el opus le voy a decir lo siguiente, mira, al total de producción. --> Sácamele el max. De total producción aquí. --> Ahí me falta todavía agregar el año. Qué pena, qué pena, bueno, esto. --> Dejemos lo siguiente. Al final ha quedado como originalmente. --> Agregue dos te agregaditos robo, el que teníamos originalmente y agregue uno --> nuevo. Vuelva a lo unir nuevamente, pero lo que hace es que te entre. --> El dos. El uno, déjalo quieto, no, el uno no lo vamos a mover nada. --> Vamos con el dos. No sé si lo hacemos. --> Usted entiende un momento o si quiere lo hago gráficamente cuál es la --> idea que queremos, no sé, pero voy a hacer lo siguiente aquí. --> Si no me entiende. --> Yo creo que si vamos a ver, mira lo siguiente, que tiene una función --> interesante. Aquí saco, aquí en este momento saco aquí, mira lo que estoy --> sacando aquí, saco a y saco 15, verdad? --> Me falta sacar este año que tenía que ser 2001. --> Leto. Yo voy acá a lo siguiente y le voy a decir aquí, oye, me van --> por anualidad. --> Sácame el primer registro del grupo que sacaste. --> Como el primero es el máximo, va a sacar el primero. --> Aquí más yo lo hacemos gráficamente, si no nos da para ver. --> Al esto bien, vamos, si quiero más, vamos, hay que hacerlo gráficamente. --> Recordarás que esto lo hace a nivel de registro el verdad? --> Espera un momentico de ser aquí. --> No, no, que te interesa. --> Si yo digo que agrupe el por por distrito, --> que está haciendo él, está metiendo en una misma bolsa estos tres registros, --> verdad? Estamos de acuerdo hasta aquí. --> Si estamos de acuerdo ahí, listo, bien, perfecto. --> Cuando yo le digo ahora que saque el máximo del grupo, de este grupo que --> sacamos, saca el máximo, el registro que saca es este, verdad? --> Estamos de acuerdo ahí. Ahora le estoy diciendo porque saca el registro. --> No creo que se pierda porque es que. --> Bueno, sí, sí, dependiendo de la función, estamos de acuerdo en ese, --> pero acá acá no lo pierda, acá lo manejamos si fuera un registro. --> Sabes por qué digo, porque tengo la duda, porque me hiciste con la inversión --> 7, inversión 5, él permitía colocar lo que voy a hacer aquí, --> el primer elemento. Entonces, mira, digamos lo siguiente, veámoslo de esta --> forma. Yo saqué ahora el máximo en el que yo este registro y estoy --> diciendo ahora me da un favor de la anualidad, saca el primero que --> encontraste y el primero que encontré fue este nada más. --> Un solo registro, nada más sería la idea. Ahora no. --> Ahora ahora recapitulamos un poquito como el ciclo de pronto nos reunimos --> un día y me parece la discusión interesante. --> Sería la configuración así, vamos a ver si nos da entonces. --> Y revisamos para ver después el. --> Listo, vamos a ver, bueno, vamos a lo siguiente, agreguemos entonces --> el te agregué este robo que es lo que vamos a configurar. --> Ok, nada más es eso. --> Entonces, en este te agradezco. --> Perdón. Bueno, hagámos lo siguiente. --> Si desean, vamos a almuerzo y regresamos nuevamente con el ciclo, --> lo volvemos a hacer nuevamente y probamos para ver esto, pues seguimos --> entonces en una hora. Les agradezco. --> Listo, pues bueno, listo.