Apache Hive gebruiken als ETL-hulpprogramma (uitpakken, transformeren, laden)

Doorgaans moet u binnenkomende gegevens opschonen en transformeren voordat u deze laadt naar een bestemming die geschikt is voor analyse. ETL-bewerkingen (Extract, Transform, and Load) worden gebruikt om gegevens voor te bereiden en te laden in een gegevensbestemming. Apache Hive in HDInsight kan ongestructureerde gegevens lezen, de gegevens indien nodig verwerken en de gegevens vervolgens laden in een relationeel datawarehouse voor beslissingsondersteuningssystemen. Bij deze benadering worden gegevens uit de bron geëxtraheerd. Vervolgens opgeslagen in aanpasbare opslag, zoals Azure Storage-blobs of Azure Data Lake Storage. De gegevens worden vervolgens getransformeerd met behulp van een reeks Hive-query's. Vervolgens gefaseerd in Hive ter voorbereiding op bulksgewijs laden in het doelgegevensarchief.

Overzicht van use-case en model

In de volgende afbeelding ziet u een overzicht van de use-case en het model voor ETL-automatisering. Invoergegevens worden getransformeerd om de juiste uitvoer te genereren. Tijdens deze transformatie veranderen de gegevens vorm, gegevenstype en zelfs taal. ETL-processen kunnen Imperial converteren naar metrische gegevens, tijdzones wijzigen en de precisie verbeteren om correct af te stemmen op bestaande gegevens in de bestemming. ETL-processen kunnen ook nieuwe gegevens combineren met bestaande gegevens om rapporten up-to-date te houden of om meer inzicht te geven in bestaande gegevens. Toepassingen zoals rapportagehulpprogramma's en services kunnen deze gegevens vervolgens gebruiken in de gewenste indeling.

Apache Hive as ETL architecture.

Hadoop wordt meestal gebruikt in ETL-processen die een groot aantal tekstbestanden (zoals CSV's) importeren. Of een kleiner, maar vaak veranderend aantal tekstbestanden, of beide. Hive is een uitstekend hulpmiddel om de gegevens voor te bereiden voordat deze in de gegevensbestemming worden geladen. Met Hive kunt u een schema maken via het CSV-bestand en een SQL-achtige taal gebruiken om MapReduce-programma's te genereren die met de gegevens communiceren.

De gebruikelijke stappen voor het gebruik van Hive om ETL uit te voeren zijn als volgt:

  1. Gegevens laden in Azure Data Lake Storage of Azure Blob Storage.

  2. Maak een metagegevensarchiefdatabase (met behulp van Azure SQL Database) voor gebruik door Hive bij het opslaan van uw schema's.

  3. Maak een HDInsight-cluster en verbind het gegevensarchief.

  4. Definieer het schema dat tijdens leestijd moet worden toegepast op gegevens in het gegevensarchief:

    DROP TABLE IF EXISTS hvac;
    
    --create the hvac table on comma-separated sensor data stored in Azure Storage blobs
    
    CREATE EXTERNAL TABLE hvac(`date` STRING, time STRING, targettemp BIGINT,
        actualtemp BIGINT,
        system BIGINT,
        systemage BIGINT,
        buildingid BIGINT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    STORED AS TEXTFILE LOCATION 'wasbs://{container}@{storageaccount}.blob.core.windows.net/HdiSamples/SensorSampleData/hvac/';
    
  5. Transformeer de gegevens en laad deze in de bestemming. Er zijn verschillende manieren om Hive te gebruiken tijdens de transformatie en het laden:

    • Query's uitvoeren en gegevens voorbereiden met Hive en opslaan als CSV in Azure Data Lake Storage of Azure Blob Storage. Gebruik vervolgens een hulpprogramma zoals SQL Server Integration Services (SSIS) om deze CSV's te verkrijgen en de gegevens te laden in een relationele doeldatabase, zoals SQL Server.
    • Query's uitvoeren op de gegevens rechtstreeks vanuit Excel of C# met behulp van het Hive ODBC-stuurprogramma.
    • Gebruik Apache Sqoop om de voorbereide CSV-bestanden te lezen en te laden in de relationele doeldatabase.

Gegevensbronnen

Gegevensbronnen zijn doorgaans externe gegevens die kunnen worden vergeleken met bestaande gegevens in uw gegevensarchief, bijvoorbeeld:

  • Sociale mediagegevens, logboekbestanden, sensoren en toepassingen die gegevensbestanden genereren.
  • Gegevenssets die zijn verkregen van gegevensproviders, zoals weerstatistieken of verkoopcijfers van leveranciers.
  • Vastgelegde, gefilterde en verwerkte streaminggegevens via een geschikt hulpprogramma of framework.

Uitvoerdoelen

U kunt Hive gebruiken om gegevens uit te voeren naar verschillende soorten doelen, waaronder:

  • Een relationele database, zoals SQL Server of Azure SQL Database.
  • Een datawarehouse, zoals Azure Synapse Analytics.
  • Excel.
  • Azure-tabel- en blobopslag.
  • Toepassingen of services waarvoor gegevens moeten worden verwerkt in specifieke indelingen of als bestanden die specifieke typen informatiestructuur bevatten.
  • Een JSON-documentarchief zoals Azure Cosmos DB.

Overwegingen

Het ETL-model wordt doorgaans gebruikt wanneer u het volgende wilt doen:

* Streamgegevens of grote volumes semi-gestructureerde of ongestructureerde gegevens uit externe bronnen laden in een bestaande database of informatiesysteem. * Schoon, transformeer en valideer de gegevens voordat ze worden geladen, mogelijk door meer dan één transformatie door het cluster te passeren. * Genereer rapporten en visualisaties die regelmatig worden bijgewerkt. Als het bijvoorbeeld te lang duurt om het rapport overdag te genereren, kunt u plannen dat het rapport 's nachts wordt uitgevoerd. Als u automatisch een Hive-query wilt uitvoeren, kunt u Azure Logic Apps en PowerShell gebruiken.

Als het doel voor de gegevens geen database is, kunt u een bestand genereren in de juiste indeling binnen de query, bijvoorbeeld een CSV. Dit bestand kan vervolgens worden geïmporteerd in Excel of Power BI.

Als u verschillende bewerkingen op de gegevens wilt uitvoeren als onderdeel van het ETL-proces, moet u overwegen hoe u ze beheert. Met bewerkingen die worden beheerd door een extern programma, in plaats van als een werkstroom binnen de oplossing, moet u bepalen of sommige bewerkingen parallel kunnen worden uitgevoerd. En om te detecteren wanneer elke taak is voltooid. Het gebruik van een werkstroommechanisme, zoals Oozie in Hadoop, kan eenvoudiger zijn dan het organiseren van een reeks bewerkingen met behulp van externe scripts of aangepaste programma's.

Volgende stappen