Scrittura e lettura di dati su file HDFS

In questo tutorial, genereremo dati casuali per poi scriverli su file HDFS. Quindi, passeremo alla lettura dei dati da file HDFS, al loro ordinamento e alla successiva visualizzazione del risultato nella console.

In questo tutorial viene utilizzato Talend Data Fabric Studio versione 6 e un cluster Hadoop: Cloudera CDH versione 5.4.

1. Creazione di un nuovo job standard

  1. Assicurati che sia selezionata la vista Integration (Integrazione).
  2. Per assicurarti che i metadati della connessione al cluster Hadoop e della connessione HDFS siano stati creati nel Project Repository (Repository progetti), espandi il cluster Hadoop.
  3. Nel repository, espandi l'area Job Designs (Progetti job), fai clic con il pulsante destro del mouse su Standard, quindi su Create Standard Job (Crea job standard). Nel campo Name (Nome) della procedura guidata di creazione di un nuovo job, digita ReadWriteHDFS. Nel campo Purpose (Scopo), digita Read/Write data in HDFS (Lettura/scrittura dati in HDFS), nel campo Description (Descrizione), digita Standard job to write and read customers data to and from HDFS (Job standard di scrittura e lettura di dati cliente su e da file HDFS), quindi fai clic su Finish (Fine). Il job viene aperto in Job Designer (Progettazione job).
  4. Aggiungi e configura un componente tRowGenerator per la generazione casuale di dati cliente.
  5. Per generare dati cliente casuali, in Job Designer (Progettazione job) aggiungi un componente tRowGenerator.
  6. Per definire lo schema e i parametri funzionali del componente tRowGenerator, fai doppio clic su tRowGenerator_1.
  7. Per aggiungere colonne allo schema, fai clic sull'icona [+] tre volte e digita i nomi di colonna CustomerID, FirstName e LastName. Quindi, configura gli attributi di questi campi.
  8. Per modificare il tipo di colonna CustomerID, fai clic sul campo Type (Tipo), seleziona Integer (Intero), quindi imposta il campo Functions (Funzioni) delle tre colonne rispettivamente su random(int,int), TalendDataGenerator.getFirstName() e TalendDataGenerator.getLastName().
  9. Nella tabella, seleziona la colonna CustomerID, quindi, nella scheda Functions parameters (Parametri funzioni), imposta il valore massimo su 1000.
  10. Nel campo Number of Rows for RowGenerator (Numero di righe per RowGenerator), digita 1000, quindi fai clic su OK per salvare la configurazione.

2. Scrittura di dati su file HDFS

Per eseguire questa operazione, dovrai creare un nuovo componente tHDFSOutput che riutilizza i metadati HDFS esistenti disponibili nel Project Repository (Repository progetti).

  1. Nel repository, in corrispondenza di Metadata (Metadati) > HadoopCluster (Cluster Hadoop) > MyHadoopCluster (Mio cluster Hadoop) > HDFS, fai clic su MyHadoopCluster_HDFS e trascina la selezione in Job Designer (Progettazione job).
  2. Nell'elenco Components (Componenti), seleziona tHDFSOutput, quindi fai clic su OK.
  3. Crea un flusso di dati dal componente tRowGenerator_1 al componente MyHadoopCluster_HDFS collegando i due componenti mediante la riga Main (Principale) e fai doppio clic sul componente MyHadoopCluster_HDFS per aprire la vista Component (Componente).

    Il componente è già configurato con le informazioni della connessione ai metadati HDFS precedentemente definite.
    .
  4. Nella casella File Name (Nome file), digita "/user/student/CustomersData" e nell'elenco Action (Azione), seleziona Overwrite (Sovrascrivi).

Il primo sotto-job di scrittura dei dati su file HDFS è stato completato. I dati precedentemente generati nel componente tRowGenerator creato inizialmente vengono scritti su HDFS mediante una connessione definita utilizzando i metadati.

3. Lettura di dati da HDFS

A questo punto, procederemo alla creazione di un sotto-job per la lettura dei dati cliente da HDFS, per il loro ordinamento e la successiva visualizzazione nella console. Per leggere i dati cliente da HDFS dovrai creare un nuovo componente tHDFSInput che riutilizza i metadati HDFS esistenti disponibili nel Project Repository (Repository progetti).

  1. Nel repository, in corrispondenza di Metadata (Metadati) > HadoopCluster (Cluster Hadoop) > MyHadoopCluster (Mio cluster Hadoop) > HDFS, fai clic su MyHadoopCluster_HDFS e trascina la selezione in Job Designer (Progettazione job).
  2. Nell'elenco Components (Componenti), seleziona tHDFSIntput, quindi fai clic su OK.
  3. Per aprire la vista componente del componente di input MyHadoopCluster_HDFS, fai doppio clic sul componente di input MyHadoopCluster_HDFS.

    Il componente è già configurato con le informazioni della connessione ai metadati HDFS precedentemente definite.
    .
  4. Nella casella File Name (Nome file), digita /user/student/CustomersData.

4. Definizione dello schema nel componente di input MyHadoopCluster_HDFS per la lettura dei dati da HDFS

  1. Per aprire l'editor dello schema, nella vista Component (Componente) del componente di input MyHadoopCluster_HDFS, fai clic su Edit schema (Modifica schema).
  2. Per aggiungere colonne allo schema, fai clic sull'icona [+] tre volte e digita i nomi di colonna CustomerID, FirstName e LastName.
  3. Per modificare il tipo della colonna CustomerID, fai clic sul campo Type (Tipo) e seleziona Integer (Intero).

    Nota: lo schema è uguale a quello di tRowGenerator e tHDFSOutput. Puoi copiarlo da uno dei due componenti e incollarlo in questo schema.
    .
  4. Connetti il componente tRowGenerator al componente di input MyHadoopCluster_HDFS utilizzando il trigger OnSubjobOk.

5. Ordinamento dei dati della colonna CustomerID in modo crescente tramite il componente tSortRow

  1. Aggiungi un componente tSortRow e connettilo al componente di input MyHadoopCluster_HDFS mediante la riga Main (Principale).
  2. Per aprire la vista Component (Componente) del componente tSortRow, fai doppio clic sul componente.
  3. Per configurare lo schema, fai clic su Sync columns (Sincronizza colonne).
  4. Per aggiungere nuovi criteri alla tabella Criteria (Criteri), fai clic sull'icona [+] e nella colonna Schema, digita CustomerID. Nella colonna Sort num or alpha? (Ordinamento numerico o alfabetico?), seleziona num (Numerico) e nella colonna Order asc or desc? (Ordine crescente o decrescente?), seleziona asc (Crescente).

6. Visualizzazione dei dati ordinati nella console mediante il componente tLogRow

  1. Aggiungi un componente tLogRow e connettilo al componente tSortRow mediante la riga Main (Principale).
  2. Per aprire la vista Component (Componente) del componente tLogRow, fai doppio clic sul componente.
  3. Nel riquadro Mode (Modalità), seleziona Table (Tabella).

Il job è pronto per essere eseguito. Per prima cosa, genererà dei dati e li scriverà su HDFS. Quindi, leggerà i dati da HDFS, li ordinerà e li visualizzerà nella console.

7. Esecuzione del job e osservazione del risultato nella console

  1. Per eseguire il job, fai clic su Run (Esegui) nella vista Run (Esegui).
  2. I dati ordinati vengono visualizzati nella console.