1:04:11
2024-10-09 10:47:18
1:29:40
2024-10-09 12:28:28
25:55
2024-10-10 09:26:29
2:38:45
2024-10-10 09:59:31
46:32
2024-10-10 15:02:46
Visit the Big Data course recordings page
WEBVTT
-->
¿No? Que me permita cargar el
-->
software entonces.
-->
Listo, ya el caso de Ernesto le
-->
subió la la UI. Y ya también
-->
está cargando, y los demás
-->
también están cargando. Vamos
-->
con un ejemplo básico entonces
-->
para entender cómo funciona el
-->
señor a nivel de esta versión
-->
porque en las versiones
-->
superiores la mayoría se está
-->
casando con Spark. Como le
-->
decía, muy raro un proyecto
-->
nuevo que alguien lo genere
-->
con MacReduce. Yo creo que no
-->
creo que alguien hoy en día un
-->
proyecto nuevo alguien lo lo
-->
creería con MacReduce. Perfecto,
-->
ya me está cargando y no sé
-->
cuando inicié la máquina
-->
virtual me quedó con mucha
-->
memoria. Me quedó con 6 gigas
-->
de memoria y me está costando
-->
esas 6 gigas. Ahora vemos por
-->
ahí qué pasó cuando...
-->
Listo, voy a cerrar esta
-->
ventana aquí que no voy a
-->
usar nada con ellas. Y espero
-->
entonces que a mí también me
-->
termine de cargar. En caso de
-->
que Edward sería iniciar ya y
-->
dice, ok, listo. Ah, vas a ver
-->
las configuraciones. Si ya le
-->
cargó la UI de Thale, por
-->
favor, vamos a crear una
-->
carpeta que se llama
-->
Procesamiento. Procesamiento.
-->
Bueno, creo que la mayoría
-->
esa máquina virtual nos
-->
devoró. Esperamos a que
-->
cargue. Ups, está demorando
-->
bastante.
-->
Bueno, por favor, si ya le
-->
cargó, cree un folder llamado
-->
Procesamiento. Perfecto, y aquí
-->
voy a maximizar.
-->
Listo, entonces lo primero que
-->
vamos a hacer es que voy a
-->
crear entonces un folder para
-->
organizarme. Ya tengo un
-->
folder netamente de
-->
almacenamiento y voy a crear ahora
-->
un nuevo folder para la parte
-->
de procesamiento. Perfecto,
-->
entonces, aquí doy ok.
-->
Derecho, crea el folder.
-->
Y este folder lo voy a llamar
-->
entonces Procesamiento.
-->
Procesamiento.
-->
Y ahí voy a meter todo mi
-->
que tienen relacionado o tienen
-->
relación con
-->
Procesamiento.
-->
Perfecto, vamos a crear el
-->
primer job aquí.
-->
Vamos a llamarlo Job.
-->
Limpieza.
-->
Archivo.
-->
Producción.
-->
Finish.
-->
Hoy sí, vamos a tener un
-->
problema con esa...
-->
Es que...
-->
Ah, ok, sí, sí, claro, lo que
-->
pasa es que tengo...
-->
No tengo mi memoria.
-->
No, me lo ocupe, yo la espero
-->
un momento. Es que la máquina
-->
virtual la guardé, pero no me
-->
estudió seis gigas. No la quiero
-->
apagar.
-->
No se preocupe, yo la espero.
-->
Hicimos dos cosas. La primera
-->
fue crear un folder llamado
-->
Procesamiento.
-->
Y lo segundo fue crear un
-->
job llamado Job Limpieza
-->
Archivo Producción.
-->
Perfecto, eso espero un
-->
momento más que todavía no ha
-->
cargado. Listo, ahora sí.
-->
Bien, ya le había comentado
-->
el día de ayer
-->
de usar
-->
un componente que se llama
-->
TPreJob y TPosJob.
-->
Listo. Vamos entonces a hacer
-->
lo siguiente. Voy a agregar aquí
-->
un componente TPreJob.
-->
TPreJob.
-->
Voy a agregar un componente
-->
de tipo THDFS
-->
Connection.
-->
Y voy a agregar ahora
-->
para encontrarle un poco de sentido
-->
a esto, le voy a agregar el día
-->
de ayer, simplemente lo mostré,
-->
pero no le busqué el sentido.
-->
Voy a agregar un archivo para
-->
LOG, que sería un componente
-->
para LOG, perdón, que se llama
-->
TWAR, que fue el día de ayer.
-->
Ya le vamos a encontrar sentido
-->
a ese TWAR como tal.
-->
Vamos a conectar entonces
-->
los componentes del TPreJob.
-->
Vamos a conectarlo aquí
-->
al señor
-->
Connection.
-->
Y vamos aquí a
-->
un component OK.
-->
Al TWAR este que está aquí.
-->
Y vamos a hacer nuestro
-->
archivito de LOG.
-->
Que es sumamente importante para
-->
la parte de errores.
-->
Entonces aquí tengo,
-->
voy a entrar a este TWAR
-->
y voy a escribir
-->
lo siguiente entonces.
-->
TWAR mensaje. El mensaje va a ser
-->
conexión
-->
exitosa
-->
Cluster Hadoop.
-->
Y esto por favor, dale
-->
que es un mensaje
-->
de seguimiento, de trace.
-->
Los LOG, recuerden que los LOG tienen
-->
varios tipos. Entonces,
-->
el TWAR mensaje, como esto es
-->
Java, en este caso, tengo que
-->
mandarle ahí entre comillas doble,
-->
quiero que escriba eso. Conexión
-->
exitosa Cluster Hadoop.
-->
El código de error, pues ya eso lo
-->
define internamente. ¿Cuál es el que usted define allá?
-->
Deje por defecto 42.
-->
Y en realidad los LOG van a ser de trace.
-->
O sea, de seguimiento.
-->
De seguimiento.
-->
Vamos aquí ahora
-->
al THDFC
-->
Connection.
-->
Y vamos
-->
a escoger en property type, vamos a
-->
escoger la que estamos definida
-->
en metadata. Entonces vamos aquí al repositorio.
-->
En el property type.
-->
Y vamos a elegir
-->
ya la que hicimos al día de ayer
-->
de manera estática sobre la
-->
metadata. ¿Por qué
-->
la llamo estática? Porque por defecto
-->
ahí cuando es estática no le puedo
-->
configurar una variable en torno.
-->
Pero yo la podía cambiar cuando la adiciono a este lado.
-->
Subajo hasta aquí
-->
y llego hasta
-->
HDFS Axa y doy
-->
OK.
-->
Claro, estática porque
-->
cuando la defino no puedo definir
-->
variables de
-->
contexto, perdón. Pero yo podía
-->
cambiarla en el componente aquí. No es el caso
-->
pero podía ser.
-->
Hacemos lo siguiente ahora y vamos a agregar
-->
un componente que no lo habíamos
-->
visto que es el componente
-->
T-LOG
-->
Catcher.
-->
Capturador de LOG. T-LOG
-->
Catcher.
-->
Y aquí
-->
vamos a agregar un T-LOG RAW que ya lo
-->
hemos visto.
-->
Y agrega un
-->
T-FI
-->
output
-->
delimited.
-->
El T-LOG es para verlo en
-->
consola y el T delimited es para que
-->
me cree el archivo LOG con respecto a eso.
-->
En este caso te podía preguntar por qué
-->
no uno ese T-LOG Catcher
-->
con un T
-->
post job.
-->
Porque por defecto
-->
la herramienta entiende que ese
-->
T-LOG Catcher lo va a ejecutar de último
-->
cuando termine de ejecutar todo lo su
-->
job. La herramienta ya entiende
-->
esa parte. Está
-->
configurada de esa manera.
-->
Una el T-LOG Catcher
-->
con el T-LOG RAW
-->
y el T-LOG RAW
-->
únalo con
-->
este T-FILE
-->
output.
-->
Vaya, dele doble click
-->
al T-LOG Catcher, por favor.
-->
Y el T-LOG Catcher por
-->
defecto te especifica
-->
tres elementos que va a capturar.
-->
Cualquier error en Java,
-->
en la ejecución de Java.
-->
Cualquier TDAI, que no lo he
-->
visto, TDAI es un componente que mata
-->
un job. Ya ver si lo vamos a ver más
-->
tarde. Y captura
-->
todo lo que esté un componente
-->
te guarda. Eso está por defecto
-->
si tú quieres capturar alguno de ellos, pues evidentemente
-->
los de chuleas.
-->
Ahí no hay que hacer más nada.
-->
Vamos al T-FILE output.
-->
Vamos a decirle que incluya
-->
el header y con el elemento
-->
adicional que añada al archivo de
-->
log. Es decir, que no lo sobrescriba,
-->
sino que vaya añadiendo cualquier
-->
error que vaya encontrando. Y yo puedo al
-->
final, si hay un error, entrar al
-->
servidor y verificar
-->
que son,
-->
que puede estar haciendo ahí o qué error
-->
pasó, dónde se quedó.
-->
Por último, mandalo a la
-->
carpeta C
-->
dos puntos, en mi caso se llama
-->
ten
-->
ten
-->
y llama el archivo
-->
logs.
-->
Voy a colocarle textex
-->
logs.txt
-->
logs.txt, es decir, me quedó
-->
el nombre de archivo
-->
de esta manera.
-->
Quedaría de esta manera.
-->
Bueno, algunos tienen la carpeta
-->
temporal.
-->
Dese cuenta que yo adopto
-->
por estándar normalmente que los
-->
nombres de carpeta los coloco en minúscula
-->
y todo lo coloco en minúscula.
-->
Noto que hay
-->
algunos que les gusta y me parece bien
-->
colocar una carpeta o nombre de archivo
-->
con la primera mayúscula.
-->
Pero recuerde que si el job lo ejecuta
-->
en Java, es perdón, en Windows
-->
y le ejecuta en Windows
-->
y tiene la carpeta temporal con
-->
t minúscula en el
-->
job y t mayúscula
-->
en la que el nombre carpeta
-->
en Windows le funciona, pero cuando
-->
cambia al INUS no le va a funcionar, le va a hacer un
-->
error. Cuando quiero llegar
-->
es que usted adopte el estándar. Si empieza
-->
todo en mayúscula, siempre colócalo lo que
-->
empieza en mayúscula.
-->
Bueno, ahora revisamos ya esta
-->
parte de cómo es, entonces
-->
esto se ejecuta al final y me va a
-->
capturar todos los errores entonces.
-->
Entonces voy a colocar aquí ahora
-->
otro teguar.
-->
Aquí abajito.
-->
Y le voy a colocar el mensaje.
-->
Iniciando
-->
lectura
-->
archivo
-->
Hadoop.
-->
Y este por favor
-->
tómelo de tres.
-->
Ahora voy a hacer lo siguiente, voy a agregar
-->
dos componentes. Un componente
-->
que se llama TH
-->
ya lo he visto
-->
DFS input
-->
TH DFS
-->
input
-->
TH DFS
-->
input
-->
y coloque
-->
su contraparte que es
-->
TH DFS
-->
output
-->
que eso no lo hemos visto.
-->
TH DFS output.
-->
A ver, entendamos por qué lo hice
-->
de esta forma.
-->
Fácilmente,
-->
y escucho conexión acá, fácilmente yo pude
-->
haber hecho lo siguiente, ir a cada
-->
a este TH DFS input
-->
y hacer la conexión como
-->
la hice exactamente aquí.
-->
No la gusta ella por favor.
-->
Decir, tomar esta conexión aquí
-->
espera que está demorando para salir, la misma que
-->
hice, es decir, tomar la conexión de aquí
-->
y hacer esto
-->
mismo también con el output.
-->
Pero cuál es el problema? La eficiencia.
-->
Es decir, por qué?
-->
Porque al hacerlo a esa configuración
-->
en cada uno de los componentes
-->
cuando entre al input
-->
se va a conectar a Hadoop.
-->
Se desconecta y después en la otra
-->
se va a conectar a Hadoop y después se desconecta.
-->
Entonces,
-->
hay dos conexiones hacia Hadoop.
-->
Ahora, estábamos pensando
-->
en que esto puede estar en la one,
-->
o sea, tú tienes tu job,
-->
lo tienes de pronto en Hadoop
-->
US y de pronto el
-->
sistema Hadoop lo tienes en Azure.
-->
Entonces hay un delay, una latencia
-->
que voy a tener que ir a buscar ese señor allá
-->
y devolverme acá. Entonces,
-->
para evitar eso, ¿qué voy a hacer? Voy a crear
-->
solamente una conexión
-->
y esta conexión va a ser aprovechada por estos
-->
dos señores acá. O sea, solamente
-->
me conectaría una sola vez.
-->
Entonces, vamos a configurar
-->
primero el input, este que está aquí.
-->
Y este input
-->
voy a decirle,
-->
usar conexión existente
-->
y voy a usar como component list
-->
HDFS Connection.
-->
Entonces,
-->
vayas aquí donde dice nombre
-->
de archivo, seguramente se va a conectar
-->
al sistema de Hadoop
-->
y le va a mostrar el sistema de
-->
fichero que está allá. Vamos a ver,
-->
efectivamente aquí está.
-->
Y voy a utilizar
-->
el primer ejemplo con
-->
producción.csv, este que aquí.
-->
Ok.
-->
Esta versión
-->
de
-->
Hadoop,
-->
del open source,
-->
los componentes de input
-->
son para archivos CSV.
-->
En el
-->
talegue tuyo tienes para leer en
-->
otro formato. O sea, este porque es gratuito
-->
y pues habría que
-->
nada más tiene
-->
nada más esto que está aquí.
-->
Ahora, estos tipos de ficheros te lo voy a explicar
-->
más adelante, porque más adelante
-->
voy a meterme un poco con parquet,
-->
que no tengo
-->
componentes para generar parquet,
-->
pero en la versión de talegue tuyo si tienes
-->
para parquet.
-->
Dejemos como text y hagamos lo siguiente,
-->
el separador de esa producción,
-->
permítame y lo confirmo,
-->
si no estoy mal, es coma.
-->
Voy a acceder aquí
-->
a ten,
-->
producción clit derecho,
-->
abrir, editar aquí
-->
y está separado
-->
por coma. Entonces, le voy a
-->
decir que el separador que está
-->
con punto y coma
-->
va con coma. Es importante que
-->
definas a nivel de estándar tu separador,
-->
porque
-->
así acostumbras
-->
si hay una memoria en que siempre vamos a ver el mismo.
-->
Y ahora hay un
-->
header, entonces le voy a colocar
-->
aquí uno.
-->
En esta parte de
-->
codificación, aquí puedes
-->
usar la codificación de entrada,
-->
asegura que
-->
la codificación de entrada sea la misma de salida,
-->
porque si no puedes dañar el formato
-->
del archivo.
-->
Dejémosla, porque como no he usado ninguna, está tomando
-->
la defecto, que es esa que aparece ahí
-->
ISO 89.
-->
Pero recuerda que esa es
-->
muy fundamental cuando tienes
-->
portugués y cuando tienes español,
-->
que es el idioma de nosotros.
-->
La de compresión, ahora te la muestro cómo es el cuento.
-->
Esa parte de compresión de data.
-->
Ahora,
-->
¿Qué quiero hacer? Vamos a hacer algo muy sencillo.
-->
Vamos a
-->
ver,
-->
este archivo tiene algunos
-->
problemas porque hay unos espacios en blanco.
-->
Entonces vamos a eliminar esos espacios en blanco,
-->
es decir, este job
-->
que voy a usar sobre Big Data,
-->
lo que va a hacer entonces es lo siguiente.
-->
Agregue
-->
por favor un T-Map
-->
aquí y ya te voy a explicar un par de cosas.
-->
Un T-Map.
-->
Y conecta
-->
ahora, por favor, se me escapaba
-->
el T-Warp, conéctalo
-->
al HDFS input.
-->
No conecto. Con un disparador
-->
o un component OK, perdón.
-->
Un component OK.
-->
Un disparador
-->
o un component OK.
-->
Si coloco un sub-job OK, la única diferencia
-->
es que el T-Warp queda
-->
en un sub-job diferente.
-->
Pero tienes que tener en cuenta que es la misma idea
-->
siendo que un component queda en el mismo
-->
sub-job y con un sub-job OK
-->
me quedan los dos en dos sub-jobs diferentes.
-->
Y aquí es para entender
-->
cómo funciona la herramienta.
-->
cuando el component... No.
-->
Porque
-->
es que hay unos componentes que no
-->
se conectan con main.
-->
Es una cuestión más de capricho de la forma
-->
en que funciona el talent.
-->
Pero si le conecto con un component OK,
-->
le conecto, ¿verdad?
-->
El main no.
-->
Lo que pasa es que hay
-->
unos componentes que no...
-->
Hay unos componentes que son con main,
-->
unos que son con iterate
-->
y unos que son con disparadores.
-->
Es más entender
-->
o saber, no entender, porque ya es un poco más
-->
de capricho de por qué lo conecto
-->
con main o con component OK.
-->
Ya es un poco más de capricho de la herramienta de por qué lo hizo así.
-->
Listo. Y aquí viene
-->
bueno, lo fundamental de la herramienta.
-->
Listo.
-->
Dese cuenta que aquí tengo un HDFS
-->
input.
-->
Si el componente es un HDFS
-->
input o el componente
-->
es un
-->
T-Spark
-->
o en su defecto, tú has cambiado
-->
en la versión del estudio la
-->
ejecución estándar a una ejecución sobre
-->
Spark. Eso lo que va a hacer
-->
entonces es que va a mandar,
-->
va a generar un script y lo va a
-->
mandar para que se ejecute, en este caso,
-->
hacia MacReduce.
-->
En pocas palabras, cuando yo conecto
-->
esto de aquí para adelante,
-->
todo esto
-->
que está hacia elante, él va a generar un script
-->
sobre Java y lo va a mandar a
-->
ejecutar sobre el Hadoop, en este
-->
caso, sobre MacReduce.
-->
¿Qué hace esto? Que te evita
-->
que tú tengas que escribir ese script.
-->
Si el componente, vuelvo
-->
repito, si el componente es T-HDFS
-->
input,
-->
si el componente es
-->
T-Spark, todo lo que
-->
usted tome de ahí hacia adelante,
-->
él va a generar un script para mandarlo
-->
y ejecutarlo con MacReduce.
-->
Eso es lo que va a hacer él.
-->
De igual forma, también te funciona,
-->
que esto no lo tenemos, es que cambies la
-->
ejecución, es decir, aquí en el job,
-->
aquí en el job, esta parte de aquí,
-->
aquí está
-->
RuneJob,
-->
en el RuneJob,
-->
la versión Talent Studio te va a ofrecer,
-->
dependiendo de lo que hayas comprado,
-->
te va a ofrecer para que tú digas, o lo
-->
ejecuto estándar o lo ejecuto sobre Spark.
-->
Y él te hace la conversión automática.
-->
Esto es lo principal de la
-->
herramienta, que me genera
-->
los scripts para ser ejecutado sobre el
-->
MacReduce o sobre un sistema Spark.
-->
Eso es lo fundamental. Ya lo demás, sigue
-->
siendo lo que es una herramienta de TL.
-->
Tú le agregas los componentes
-->
como tú quieras y él te genera el script
-->
para que se ejecute sobre el clóter de Hadoop o clóter de Spark.
-->
Para contar, eso es lo que hace la
-->
herramienta y que ayuda mucho
-->
para no tener que escribir tanto poder.
-->
Listo,
-->
conecta ahora este tema
-->
por favor hacia
-->
el HDF Output
-->
y vamos
-->
a llamarlo aquí
-->
Salida Curada.
-->
Voy a colocar
-->
a otro The War de este lado.
-->
Lo voy a comentar con
-->
Component OK desde el Output
-->
con Component OK
-->
y le voy a colocar el mensaje al The War
-->
Archivo Curado o Limpiado
-->
de forma correcta.
-->
De tipo 3.
-->
Archivo
-->
Curado
-->
de forma correcta.
-->
Esto lo hago para generar
-->
los 3 o es su efecto
-->
vigilar los errores.
-->
Curado de forma correcta.
-->
Lo que ya no hemos configurado
-->
se me escapó una
-->
configuración en el
-->
HDFS Input, se me
-->
olvidó.
-->
Listo, vamos aquí
-->
se me escapó en este HDFS Input
-->
doble clic por favor.
-->
Doble clic.
-->
Y recordará, vamos a hacerlo
-->
de forma diferente para que usted escoja
-->
lo que usted desee.
-->
Si recordará que el día de ayer
-->
para recordarlo
-->
el día de ayer tomamos este
-->
archivito, buscamos
-->
el XML y eso lo que hacía
-->
era que me devolvía, ¿cierto?
-->
Vamos a hacerlo un poco diferente ahora.
-->
¿Cómo lo hacemos diferente?
-->
Ah, no, pero este componente no me va
-->
a permitir hacer eso.
-->
Ah, sí, pero si es así.
-->
¿Qué pasa? Que el esquema
-->
que quiero está en el
-->
metadata. Entonces
-->
donde dice esquema
-->
hay un combo voz, le da clic ahí
-->
y le dice repositorio.
-->
Le dice, bueno aquí
-->
que cambia el yes.
-->
Y busca, le aparece un
-->
text file y un botón
-->
dele clic en el botón
-->
y le va a aparecer toda la metadata que tiene
-->
configurada.
-->
Y en esa metadata va a buscar
-->
en el archivo delimitado, producción
-->
que es lo que tenemos, y da clic en
-->
metadata. Y eso hace exactamente
-->
lo mismo de ayer, es decir
-->
ayer lo que hicimos fue
-->
está listo.
-->
Listo, listo, vamos a ver, claro, cómo no.
-->
Está, vea ese
-->
HDFS input y se va donde dice
-->
esquema.
-->
La parte de esquema.
-->
Y al ladito está un combo voz.
-->
Ese combo voz
-->
lo abre y escoge la
-->
opción repositorio.
-->
Aquí le dice
-->
que si desea guardar, yes.
-->
Acto seguido le aparece
-->
un casilla de texto y un botón
-->
al ladito, le da al botón
-->
y le va a aparecer el
-->
repositorio de los elementos
-->
que están configurados
-->
en la metadata.
-->
Ahí va a buscar el archivo de la metadata
-->
que en este caso estaría en file delimited
-->
producción y escoge
-->
la opción metadata.
-->
Ok.
-->
Y yes.
-->
Y si vas aquí en editar esquema,
-->
debería aparecer el esquema
-->
que te agregó que es exactamente el de
-->
producción que tenía ya.
-->
Bueno, mientras
-->
algunos van terminando ahí, la idea
-->
principal es que entienda cómo
-->
es el funcionamiento y la arquitectura
-->
de la herramienta a nivel de viz data.
-->
Si el componente de entrada
-->
es un HDFS input
-->
o un TSPAR, lo que hace
-->
es que en el caso de
-->
TFS input, el generador
-->
lo manda a ejecutar contra
-->
MacReduce.
-->
Y si es TSPAR,
-->
pues lo mandaría a ejecutar contra el cluster
-->
de SPAR que tenga configurado.
-->
Listo.
-->
Vamos de manera muy sencilla
-->
al TMAG. Ya de aquí en adelante,
-->
pues es lo que hemos aprendido de cualquier herramienta
-->
que haya visto. Vamos aquí entonces
-->
al TMAG.
-->
Agrega entonces una variable
-->
aquí.
-->
Manda season
-->
a este lado.
-->
Y después que creas
-->
una variable, no hagas la otra,
-->
después que creas la primera,
-->
suelta la segunda para que te de
-->
la configuración de ese señor.
-->
Suelta la segunda aquí, suelta aquí
-->
y haz de cuenta que la entrada
-->
ya corresponde con la salida.
-->
O sea, lo mismo que
-->
entra en nombre, sale
-->
en salida. No me te va a confiar,
-->
pero eso es cuando ya por lo
-->
menos tengo una variable creada.
-->
Al nombre de variable, acá
-->
le va a colocar season.
-->
Y lo único que va a hacer
-->
en la expresión
-->
es agregarle a cada una,
-->
le va a dar punto
-->
trim.
-->
Trim para quitar los espacios que están al principio
-->
y al final. Aquí está trim.
-->
Ok.
-->
Y aquí le vamos a dar trim.
-->
Es claro que para la cantidad de registro
-->
que tiene ese señor, pues eso
-->
demora más ejecutándolo sobre un sistema
-->
evidata.
-->
Pero en este caso tenemos un cluster
-->
evidata muy, muy pequeño con un solo data no.
-->
para lo que queremos
-->
hacer, pues mucho.
-->
Pase por favor
-->
entonces las primeras tres columnas
-->
de acá, las pasa
-->
a la salida.
-->
El season y el clock lo toma de las
-->
variables que definió.
-->
Y el área y
-->
la reducción, la suelta de este lado.
-->
Ahí faltaría el nombre Eva
-->
o nuestra para ver.
-->
Y suelta, ahí está, listo. Perfecto.