Introducción
Su empresa minorista recibe ahora archivos de dos tiendas en dos fechas. El programa de conteo procesará los archivos que usted le proporcione; no puede adivinar qué día tenía previsto ni reconocer que un archivo de resultados antiguo debe excluirse. Por tanto, un programa correcto puede producir una respuesta comercial incorrecta si la selección de entrada es equivocada.
Ha aprendido a conservar, copiar, archivar y exportar archivos individuales. Aquí pasará de un archivo a una entrada por lotes, una colección de archivos seleccionada deliberadamente. Mantendrá las fechas separadas, comparará el número de archivos y sus contenidos, y guardará un manifiesto: una lista de los archivos exactos de HDFS seleccionados para una ejecución.
HDFS almacena el contenido de los archivos sin comprender columnas comerciales, fechas ni encabezados CSV. Observará ese límite antes de organizar la entrada. Este laboratorio prepara de forma independiente sus propios archivos locales y un ejemplo de resultado anterior; no depende del estado de laboratorios previos. Utilice Terminal.
Distinga el texto almacenado de su significado
En este paso, examinará las entregas locales y observará que subir un CSV conserva su encabezado como texto ordinario.
Comience en su espacio de trabajo local:
cd /home/labex/project
Liste la entrega de la primera fecha. Una fecha en el nombre de un directorio es una convención útil, no un tipo de dato impuesto por HDFS:
ls /home/labex/project/data/2026-10-14
Debería ver store-east.txt y store-west.txt. Léalos en ese orden con el comando local cat:
cat /home/labex/project/data/2026-10-14/store-east.txt /home/labex/project/data/2026-10-14/store-west.txt
Texto esperado:
notebook pen
notebook
folder pen
Aquí cada palabra es una etiqueta de producto registrada. Estos archivos son adecuados para el flujo de conteo de palabras que aprenderá más adelante. Otro sistema ha proporcionado un formato diferente. Lea la pequeña muestra CSV:
cat /home/labex/project/data/orders-preview.csv
Texto esperado:
product,quantity
notebook,2
pen,1
CSV utiliza comas para separar campos. Su primera línea es un encabezado que nombra las columnas; las otras dos líneas son registros comerciales. HDFS no elimina automáticamente esa primera línea ni interpreta quantity como un número entero.
Mantenga esta muestra separada del lote de etiquetas de productos. Cree un directorio de HDFS para ella:
hdfs dfs -mkdir -p /user/labex/batch-inputs/preview
Suba el CSV:
hdfs dfs -put /home/labex/project/data/orders-preview.csv /user/labex/batch-inputs/preview/orders.csv
Vuelva a leerlo:
hdfs dfs -cat /user/labex/batch-inputs/preview/orders.csv
Las tres líneas permanecen, incluido el encabezado. Omitir un encabezado o interpretar un número son decisiones de procesamiento. Mezclar este archivo con la entrada de etiquetas de palabras cambiaría el significado del cálculo, aunque todos los archivos se pudieran leer.
Organice las entregas por fecha
En este paso, asignará a cada fecha un directorio separado de entradas originales y subirá los dos archivos de tiendas correspondientes.
Utilice una estructura de directorios que haga visible la distinción entre entradas y salidas:
batch-inputs/
raw/2026-10-14/ archivos de productos del primer día
raw/2026-10-15/ archivos de productos del día siguiente
preview/ ejemplo de formato CSV
results/previous-run/ salida preparada de una ejecución anterior
El resultado anterior solo es un ejemplo preparado para aprender a seleccionar entradas. No debe formar parte del nuevo lote de datos originales. Cree los dos directorios diarios:
hdfs dfs -mkdir -p /user/labex/batch-inputs/raw/2026-10-14 /user/labex/batch-inputs/raw/2026-10-15
El patrón *.txt del shell coincide con nombres de archivo locales que terminan en .txt. En el siguiente comando, el shell expande el patrón local sin comillas en las dos rutas de origen antes de ejecutar el cliente de HDFS. El último argumento es un directorio existente de HDFS:
hdfs dfs -put /home/labex/project/data/2026-10-14/*.txt /user/labex/batch-inputs/raw/2026-10-14/
Ahora cambie únicamente la fecha en ambas ubicaciones para subir la segunda entrega:
hdfs dfs -put /home/labex/project/data/2026-10-15/*.txt /user/labex/batch-inputs/raw/2026-10-15/
Si los archivos de destino ya existen, examínelos antes de decidir si va a sobrescribir algo. Conservar una entrada original es más útil que eliminarla solo para que vuelva a ejecutarse un comando de subida.
Compruebe cada lote con -count, que aprendió en el laboratorio del ciclo de vida:
hdfs dfs -count /user/labex/batch-inputs/raw/2026-10-14 /user/labex/batch-inputs/raw/2026-10-15
Cada fecha debería contener un directorio y dos archivos. Las columnas de tamaño del contenido no tienen por qué coincidir: las fechas contienen registros diferentes. El número de archivos por sí solo no demuestra que haya seleccionado la fecha correcta, por lo que también debe listar la primera fecha:
hdfs dfs -ls /user/labex/batch-inputs/raw/2026-10-14
Ambas entradas deberían mostrar los nombres de tienda esperados dentro de 2026-10-14. Unos pocos archivos pequeños permiten leer fácilmente este ejercicio. A una escala mucho mayor, una gran cantidad de archivos diminutos impone una sobrecarga de metadatos a HDFS; eso no significa que todos los archivos pequeños deban combinarse siempre.
Seleccione y compruebe un lote
En este paso, preparará un manifiesto exacto de archivos para el 14 de octubre y comparará su texto de entrada con la entrega local esperada.
Antes de ejecutar un comando, prediga qué directorio debe formar parte del manifiesto: ¿todo el árbol batch-inputs, todo el árbol raw o únicamente raw/2026-10-14? El directorio de fecha más específico corresponde al día solicitado y excluye la siguiente fecha, la muestra CSV y los resultados antiguos.
La opción -ls -C de HDFS imprime rutas sin las columnas del listado detallado. Utilícela para la fecha seleccionada:
hdfs dfs -ls -C /user/labex/batch-inputs/raw/2026-10-14
Las dos rutas deberían terminar en store-east.txt y store-west.txt. Para facilitar la comparación de la lista guardada, una tubería del shell, escrita |, pasa la salida del primer comando a un segundo comando. sort ordena las líneas; > guarda el resultado localmente:
hdfs dfs -ls -C /user/labex/batch-inputs/raw/2026-10-14 | sort > /home/labex/project/output/input-manifest.txt
Lea su manifiesto:
cat /home/labex/project/output/input-manifest.txt
Rutas esperadas:
/user/labex/batch-inputs/raw/2026-10-14/store-east.txt
/user/labex/batch-inputs/raw/2026-10-14/store-west.txt
También puede utilizar un patrón en el lado de HDFS. Las comillas simples conservan *.txt para que sea el cliente de HDFS, en lugar del shell local, el que encuentre las rutas remotas coincidentes:
hdfs dfs -cat '/user/labex/batch-inputs/raw/2026-10-14/*.txt' > /home/labex/project/output/selected-input.txt
Para estos nombres de archivo, HDFS lee el archivo east antes que el archivo west. Guarde el texto local correspondiente en ese mismo orden explícito:
cat /home/labex/project/data/2026-10-14/store-east.txt /home/labex/project/data/2026-10-14/store-west.txt > /home/labex/project/output/expected-input.txt
Compare ambos:
diff /home/labex/project/output/expected-input.txt /home/labex/project/output/selected-input.txt
No debería aparecer ninguna diferencia. Como otra comprobación, wc -l cuenta las líneas terminadas en un salto de línea de cada archivo:
wc -l /home/labex/project/output/selected-input.txt
El resultado debería comenzar con 3. Son tres líneas de texto que contienen cinco etiquetas de productos, no tres pedidos. El significado de un registro procede del formato del archivo y de la tarea, no de HDFS. El manifiesto, los contenidos de los archivos y el número de líneas, en conjunto, hacen explícita la selección de entrada.
Resumen
Separó una muestra CSV de los archivos de texto con etiquetas de productos, mantuvo las entradas originales de cada fecha en su propio directorio y seleccionó un lote mediante un manifiesto. Comprobó tanto los nombres de archivo como los contenidos, en lugar de confiar únicamente en una subida o en el número de archivos.
En el siguiente desafío, organizará una nueva entrega utilizando las habilidades de administración de archivos y selección de entradas que ya ha practicado.



