Een Apache Parquet-bestand is een open-source dataopslagformaat dat wordt gebruikt voor columnaire databases in analytische query's. Als u kleine datasets hebt, maar miljoenen rijen om te zoeken, is het misschien beter om een columnair formaat te gebruiken voor betere prestaties. Columnaire databases slaan data op door kolommen te groeperen in plaats van de standaard op rijen gebaseerde database die op rijen groepeert. Een parketbestand is een van de verschillende columnaire opslagformaten.
Wat is een parketbestand?
In plaats van rijen te groeperen zoals een Excel-spreadsheet of een standaard relationele database, groepeert een Apache Parquet-bestand kolommen samen voor snellere prestaties. Parquet is een columnair opslagformaat en geen database zelf, maar het Parquetformaat is gebruikelijk bij datalakes, vooral bij Hadoop. Omdat het een columnair formaat is, is het populair bij analytische dataopslag en query's.
De meeste ontwikkelaars zijn gewend aan dataopslag op basis van rijen, maar stel u voor dat u een Excel-spreadsheet draait, zodat de kolommen nu worden weergegeven in plaats van genummerde rijen. In plaats van bijvoorbeeld een klantentabel bij te houden met een lijst met voor- en achternaamkolommen waarbij elke voor- en achternaam als een rij is gegroepeerd, slaat een parketbestand kolommen samen op, zodat databases sneller informatie uit een specifieke kolom kunnen teruggeven in plaats van door elke rij met meerdere kolommen te zoeken.
Voordelen van parketbestanden
Naast queryprestaties op basis van de manier waarop parketbestanden data opslaan, is het andere belangrijkste voordeel kostenefficiëntie. Apache Parquet-bestanden hebben zeer efficiënte compressie en decompressie, zodat ze niet zoveel ruimte in beslag nemen als een standaard databasebestand. Door minder opslagruimte in te nemen, kan een onderneming duizenden dollars aan opslagkosten besparen.
Kolomopslagformaten zijn het beste met big data en analytische query's. Parquetbestanden kunnen afbeeldingen, video's, objecten, bestanden en standaardgegevens opslaan, zodat ze in elk type analytische toepassing kunnen worden gebruikt. Omdat Parquet file-strategieën open source zijn, zijn ze ook goed voor organisaties die hun dataopslag- en querystrategieën willen aanpassen.
Hoe parketbestanden werken
Parquetbestanden bevatten op kolommen gebaseerde opslag, maar ze bevatten ook Metadata De kolommen worden in elke rijgroep gegroepeerd voor query-efficiëntie, en de Metadata helpen de database-engine data te lokaliseren. De Metadata bevat informatie over de kolommen, rijgroepen met data en het schema.
Het schema in een parketbestand beschrijft de kolomgebaseerde benadering van opslag. Schemaformaat is binair en kan worden gebruikt in een Hadoop-datalakeomgeving. Parquetbestanden kunnen in elk bestandssysteem worden opgeslagen, zodat ze niet beperkt zijn tot alleen Hadoop-omgevingen.
Een voordeel van het Parquet-bestandsopslagformaat is een strategie die predicate pushdown wordt genoemd. Met predicate pushdown filtert de database-engine data vroeg in de verwerking, zodat gerichtere data via de pijplijn worden overgedragen. Door minder data te hebben die op een query zijn gericht, verbetert het de queryprestaties. Minder dataverwerking vermindert ook het gebruik van computerresources en verlaagt uiteindelijk ook de kosten.
Parquetbestanden gebruiken
Parquetbestanden zijn Apache-bestanden, dus u kunt ze in uw eigen Python-scripts maken op voorwaarde dat u meerdere bibliotheken importeert. Stel dat u een tafel hebt in Python:
import numpy as np
import pandas as pd
import pyarrow as pa
df = pd.DataFrame({'one': [-1, 4, 1.3],
'two': ['blue', 'green', 'white'],
'three': [False, False, True]},
index=list('abc'))
table = pa.Table.from_pandas(df)
Met deze tabel kunnen we nu een parketbestand maken:
import pyarrow.parquet as pq
pq.write_table(table, 'mytable.parquet')
De bovenstaande code creëert het bestand "mytable.parquet" en schrijft de tabel ernaar toe. U kunt het nu uit uw favoriete database lezen en de data importeren, of u kunt de data gebruiken voor uw eigen query's en analyses.
U kunt deze tabel ook uit het bestand lezen met Python:
pq.read_table('mytable.parquet', columns=['one', 'three'])
Met de write()-functie kunt u opties instellen wanneer u de tabel naar een bestand schrijft. U kunt een lijst met opties vinden op de site van Apache, maar hier is een voorbeeld van het instellen van de compatibiliteit van het bestand met Apache Spark:
import numpy as np
import pandas as pd
import pyarrow as pa
df = pd.DataFrame({'one': [-1, 4, 1.3],
'two': ['blue', 'green', 'white'],
'three': [False, False, True]},
flavor=’spark’)
table = pa.Table.from_pandas(df)
Conclusie
Als u van plan bent om parketbestanden te gebruiken voor Hadoop, Apache Spark of andere compatibele databases, kunt u het maken van bestanden automatiseren met behulp van Python of bestanden importeren in de database-omgeving voor analyse. Parquetbestanden maken gebruik van compressie om de behoefte aan opslagruimte te verlagen, maar u hebt nog steeds overmatige opslagcapaciteit nodig voor grote big data-silo's. Pure Storage kan u helpen met big data-opslag met onze deduplicatie- en compressietechnologie.