TSV naar Parquet omzetten

Hier zet je TSV naar Parquet 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. Parquet bewaart precies wat TSV bewaarde.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.

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

De tab-gescheiden tabellen die analysetools opleveren

Veel wetenschappelijke en analytische output is tab-gescheiden uit gewoonte: expressiematrices, variant-tabellen, annotatiebestanden, instrumentlogs. De tab werd gekozen omdat de beschrijvende kolommen vol komma’s en puntkomma’s zitten.

Het is een slecht formaat om herhaaldelijk tegen te rekenen: elke lezing ontleedt elke byte opnieuw, en elk gereedschap leidt de kolomtypes net iets anders af. Eenmalig omzetten naar een getypeerd kolombestand verplaatst dat werk naar voren.

NA, een kale punt en een streepje: de sentinels die een kolom hertyperen

Een Parquet-kolom heeft één type voor al zijn waarden. De schrijver leest de hele kolom voordat hij beslist, en de regel is bewust streng: is elke waarde een geheel getal binnen het 32-bitsbereik, dan wordt het INT32; is er ook maar één waarde die geen getal is, dan wordt de hele kolom tekst.

Analysetabellen zitten vol met precies zulke waarden. NA is de R-conventie, een kale punt is de VCF- en GTF-conventie voor een ontbrekend veld. Eén van die waarden waar dan ook in een kolom van tien miljoen getallen maakt er een kolom tekst van.

Waarom de schrijver weigert de waarde te laten vallen

De verleidelijke oplossing is de kolom typeren op basis van de eerste rijen en al wat afwijkt als null schrijven. De meeste tools doen precies dat, en het levert een bestand op dat geldig lijkt en stilzwijgend elke rij met de sentinel heeft weggegooid.

Een tekstkolom is luid: hij valt meteen op zodra je het schema bekijkt, en de cast vertelt precies welke waarden niet pasten. Weigeren om te gokken kost een cast en bespaart een fout die achteraf zeer moeilijk te vinden is.

De sentinel vinden voordat je omzet

Eén commando volstaat: cut -f7 tabel.tsv | sort -u | head -50 toont de unieke waarden van de zevende kolom, en de sentinel valt meteen op.

De oplossing zit in de bron, niet in de converter: vervang de markering door een echt leeg veld. Nulls doen niet mee in de typeafleiding, dus een kolom getallen met echte hiaten komt door als numerieke kolom met nulls erin.

Een tabel van tweeduizend kolommen breed

Brede tabellen zijn waar de kolomgeoriënteerde opslag het meeste oplevert. Een expressiematrix met een rij per gen en een kolom per monster wordt kolom na kolom opgeslagen, dus een query die vier kolommen noemt leest ook maar vier kolommen aan bytes.

Tegen een tab-gescheiden bestand moet dezelfde query elke byte van elke rij lezen om de gevraagde velden te vinden, want de enige manier om het zeventiende veld te vinden is zeventien tabs te tellen.

Precisie, en waarom hele getallen als DOUBLE eindigen

De schrijver geeft INT32 alleen waar elke waarde in de kolom binnen het 32-bitsbereik past. Daarboven wordt de kolom DOUBLE in plaats van INT64.

Waarden passeren onderweg via JavaScript-getallen, die 53 bits precisie voor gehele getallen dragen, dus een genomische coördinaat voorbij dat punt is al afgerond voordat de schrijver hem ziet. INT64 declareren zou een nauwkeurigheid beloven die de waarde niet meer heeft.

Wat er over je tabel wordt vastgelegd

De voettekst van het bestand bevat de kolomnamen zoals de kopregel ze schreef, het type van elk, en het rijaantal, met de data geschreven in rijgroepen met per-kolomstatistieken. Elke kolom wordt apart gecomprimeerd, met de standaardcodec van de schrijfbibliotheek.

Een kolom met herhalende waarden — een chromosoomkolom, een sample-ID, een categorie — comprimeert bijna tot niets doordat de waarde als woordenboek wordt opgeslagen met kleine verwijzingen erin. Een kolom met continue metingen doet dat niet.

Het resultaat bevragen in DuckDB zonder het te laden

DuckDB leest het bestand ter plaatse: een FROM-clausule met het pad volstaat. DESCRIBE SELECT * FROM "tabel.parquet" toont het afgeleide schema — het eerste om naar te kijken en de snelste manier om een kolom te vinden die als tekst binnenkwam.

pandas leest het in één aanroep en Spark behandelt het als een tabel van huis uit. In alle drie is het bevragen van de afwijkende waarden beter dan blind casten, want een cast maakt null wat niet past.

Waar de omzetting draait en hoe groot een tabel kan zijn

Beide helften draaien op deze pagina: de tab-gescheiden parser is gewoon JavaScript en de Parquet-schrijver is een bibliotheek die op aanvraag geladen wordt. Er wordt niets geüpload, wat telt bij een ongepubliceerde resultatenset of een embargo.

De hele tabel staat in het geheugen terwijl hij naar kolommen wordt omgezet, dus tientallen megabytes gaat zonder omhaal en enkele honderden is waar een browsertab begint te haperen. Een tabel van meerdere gigabytes hoort in DuckDB.

Wanneer het tab-gescheiden bestand beter blijft zoals het is

Houd het aan als iemand het als tekst moet lezen. Parquet is binair, niet bewerkbaar, en de registry noteert de ondersteuning ervoor als wisselvallig — een collega zonder de juiste tooling kan het helemaal niet openen.

Houd het ook aan als het bestand een gepubliceerd artefact is. Tab-gescheiden tabellen zijn wat tijdschriften en repositories accepteren en blijven leesbaar zonder afhankelijkheid. Zet om naar Parquet voor de werkkopie die je herhaaldelijk filtert.

Zo zet je TSV naar Parquet om

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

TSV of Parquet: wat er verandert

TSV vergeleken met Parquet
TSVParquet
Volledige naamTab-Separated ValuesApache Parquet
Bestandsextensie.tsv, .tab.parquet
Mediatypetext/tab-separated-valuesapplication/vnd.apache.parquet
CompressieZonder verlies — er gaat niets weg
Voor het eerst gepubliceerd19932013
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. TSV en Parquet bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.

Het resultaat openen

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

Waarvoor elk formaat bedoeld is

TSV verscheen in 1993. Het is vastgelegd in IANA text/tab-separated-values, en dat is de moeite waard als het bestand het gereedschap moet overleven dat het schreef.

Parquet komt van Apache Software Foundation en stamt uit 2013. pandas, Apache Spark en DuckDB 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 TSV naar Parquet: veelgestelde vragen

Wordt mijn TSV-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 TSV naar Parquet 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 TSV naar Parquet?

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

Is TSV naar Parquet verliesvrij?

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

Meer over deze formaten