Parquet naar TSV omzetten

Hier zet je Parquet naar TSV om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Zonder verlies Er gaat niets weg. TSV bewaart precies wat Parquet bewaarde.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Een Parquet-bestand kun je niet zomaar bekijken

Het is een binaire container. head erop print de vier bytes PAR1 en dan een scherm vol ruis, grep vindt niets betrouwbaars want de waarden zijn gecomprimeerd en woordenboekgecodeerd, en wc -l geeft een getal zonder relatie tot het aantal rijen. Het bestand is bedoeld om door een engine gelezen te worden.

Dat is precies de situatie waarvoor deze omzetting bestaat: een Parquet-export op een server, een laptop zonder beheerdersrechten, een container zonder iets geïnstalleerd. Er regels van maken is de snelste route om er überhaupt iets over te kunnen zeggen.

Waarom de tab het juiste scheidingsteken is voor een pijplijn

Waarden in een data-export zitten vol komma’s — adressen, productnamen, vrije tekst, getallen in Europese notatie. Een kommagescheiden bestand moet dat allemaal tussen aanhalingstekens zetten, en elke gebruiker van het bestand moet quoting correct implementeren voor hij een kolomgrens kan vinden.

Tabs komen in dat soort data vrijwel nooit voor, dus concurreren scheidingsteken en inhoud niet meer met elkaar. Na deze omzetting vindt cut -f3 de derde kolom, awk -F"\t" ook. Niets hoeft geparseerd te worden; er hoeft alleen gesplitst te worden.

De ene waarde die een positioneel hulpmiddel nog kan breken

Een tab binnen een waarde is de uitzondering. Zeldzamer in data uit een Parquet-bestand dan uit een spreadsheet, maar het komt voor — vrijetekstvelden dragen wat er ooit in geplakt werd. Gebeurt dat, dan schrijft de omzetter dat veld tussen dubbele aanhalingstekens, want het alternatief is een rij die stilzwijgend een kolom te veel krijgt.

Die uitvoer is correct en een echte parser verwerkt het goed. cut -f niet: het telt tabtekens en kent geen aanhalingsteken, dus vanaf die rij ziet het één veld te veel. Geeft een pijplijn scheve resultaten op een handjevol van een miljoen rijen, dan verklapt grep -c '"' output.tsv in een seconde of dit de oorzaak is.

Tijdstempels komen eruit in een vorm die sorteert

Een tijdstempelkolom wordt geschreven als een ISO 8601-tekst — 2024-03-11T09:30:00.000Z — het enige zinnige antwoord in een formaat zonder datumtype. Het heeft een eigenschap die in een shell veel uitmaakt: het sorteert chronologisch onder een gewone lexicale sortering.

sort -k4 op een datumkolom doet dus wat je bedoelde, uniq -c op de eerste tien tekens telt rijen per dag. Geen van beide werkt op een landspecifiek geformatteerde datum, en geen van beide werkt op een epoch-getal zonder rekenwerk.

Geneste kolommen komen aan als JSON, en jq neemt het vandaar over

Parquet bevat native lijsten, structs en maps. Een tekstregel niet, dus een geneste kolom wordt als JSON binnen zijn veld geschreven: een lijst komt aan als ["a","b"], een struct als een object met zijn ledennamen.

Dat is bewust een vorm die iets anders kan lezen. cut -f5 output.tsv | jq ".[0]" haalt het eerste element van elke lijst, en de nesting overleeft de overtocht. Binaire kolommen zonder tekstannotatie worden lowercase hexadecimaal geschreven: omkeerbaar, geen scheidingsteken erin, en niemand verwart het met proza.

Null-waarden worden lege velden, en wat dat verbergt

Een null wordt geschreven als een leeg veld. Elke rij behoudt hetzelfde aantal tabs, dus het bestand blijft rechthoekig en positionele tools blijven uitgelijnd.

Het wist ook een onderscheid dat het bronbestand zorgvuldig maakte. Parquet legt nulbaarheid per kolom vast en onderscheidt een null van een lege string; in de uitvoer zijn beide hetzelfde: nul tekens tussen twee tabs. Tel je ontbrekende waarden, haal die telling dan uit de bron met een query-engine.

Het schema staat niet in de tekst, dus lees het eerst

Alles wat het Parquet-bestand over zijn kolommen wist — het type van elk, het aantal rijen, statistieken per kolom — leeft in een footer, en niets daarvan overleeft in een tabgescheiden bestand. De uitvoer heeft een koprij met namen en daarna zijn het alleen tekens.

Kun je het schema ergens vandaan lezen, doe dat dan voor het omzetten en schrijf het op. DESCRIBE SELECT * FROM "file.parquet" in DuckDB print het in één statement.

Hoeveel tekst een klein Parquet-bestand oplevert

Parquet is gecomprimeerd en woordenboekgecodeerd, dus de tekst waartoe het uitzet, is routinematig meerdere malen de bestandsgrootte. Een kolom met herhaalde statuscodes kost in de bron bijna niets en kost in de uitvoer een volledige kopie per rij.

Dat is de moeite van vooraf inschatten waard, want de uitgezette tabel wordt tijdens de omzetting in het geheugen gehouden. Een export van honderd megabyte kan veel meer dan honderd megabyte tekst opleveren.

De export wordt hier gelezen en niets wordt verstuurd

De Parquet-lezer is een bibliotheek die op verzoek in deze pagina geladen wordt, en het schrijven is gewone JavaScript. Geen verzoek draagt het bestand mee, dus een export uit het midden van een dataplatform — meestal de ongeaggregeerde, ongemaskeerde versie — wordt geen kopie op andermans server.

Er is geen wachtrij en geen account, en het plafond is 100 MB per bestand. Voor een bestand groot genoeg om een probleem te zijn, is een query-engine het betere antwoord.

Wanneer DuckDB installeren beter is dan omzetten

Kun je iets installeren, installeer dan DuckDB. Het leest het Parquet-bestand ter plekke zonder importstap, print het schema in één statement, beantwoordt de vraag die je echt had met een WHERE-clausule, en materialiseert nooit de hele tabel.

Deze omzetting is voor als dat niet kan: een afgesloten machine, andermans laptop, een bestand per e-mail, een vraag van vijf minuten die geen installatie rechtvaardigt. Ook juist als de bestemming echt een tekstpijplijn is — een bestaand awk-script, een diff tegen gisterens export.

Zo zet je Parquet naar TSV om

  1. Sleep je Parquet-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies TSV als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare TSV-bestand.

Parquet of TSV: wat er verandert

Parquet vergeleken met TSV
ParquetTSV
Volledige naamApache ParquetTab-Separated Values
Bestandsextensie.parquet.tsv, .tab
Mediatypeapplication/vnd.apache.parquettext/tab-separated-values
CompressieZonder verlies — er gaat niets weg
Voor het eerst gepubliceerd20131993
Uitgegeven doorApache Software Foundation
SpecificatieIANA text/tab-separated-values
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenCSV, JSONCSV, JSON

Wat behouden blijft

Er gaat niets verloren. Parquet en TSV bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.

Wat het doelformaat erbij kan

TSV is een werkformaat en Parquet een af formaat. Wat terugkomt is bewerkbare tekst in plaats van een afbeelding van de pagina, meestal de reden voor de omzetting en tegelijk haar grens.

Het resultaat openen

pandas leest zowel Parquet als TSV, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.

Waarvoor elk formaat bedoeld is

TSV stamt uit 1993, vastgelegd in IANA text/tab-separated-values. Microsoft Excel, LibreOffice Calc en pandas lezen het formaat.

TSV verscheen in 1993 en Parquet in 2013. Het oudste is doorgaans het veiligste bestand om te overhandigen; het nieuwste doet hetzelfde werk met minder bytes.

Van Parquet naar TSV: veelgestelde vragen

Wordt mijn Parquet-bestand ergens heen geüpload?

Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt. De motor achter juist dit paar is parquet-wasm, een WebAssembly-versie van de Apache Arrow-lezer; je browser haalt die één keer op en bewaart hem.

Is Parquet naar TSV omzetten gratis?

Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk. parquet-wasm wordt naar je eigen machine gehaald en draait daar, en daarom staat er geen teller op.

Gaat er kwaliteit verloren bij het omzetten van Parquet naar TSV?

Nee. TSV bewaart dezelfde inhoud zonder iets weg te gooien: het resultaat is in kwaliteit identiek aan het origineel.

Is Parquet naar TSV verliesvrij?

Er gaat niets verloren. Parquet en TSV bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.

Is het TSV-bestand daarna bewerkbaar?

TSV is een werkformaat en Parquet een af formaat. Wat terugkomt is bewerkbare tekst in plaats van een afbeelding van de pagina, meestal de reden voor de omzetting en tegelijk haar grens.

Meer over deze formaten