Convertir Parquet en TSV

Vous pouvez convertir Parquet en TSV gratuitement et sans compte : déposez le fichier ci-dessus et, une ou deux secondes plus tard, le résultat est prêt à télécharger. La conversion se fait dans votre propre navigateur : le fichier n’est donc jamais téléversé. Cela marche sous Windows, macOS et Linux comme sur iPhone et Android, et continue de marcher si vous coupez le réseau.

  • Où cela s’exécute Dans votre navigateur. Le fichier n’est pas téléversé.
  • Sans perte Rien ne se perd. TSV contient exactement ce que contenait Parquet.
  • Limite de taille Jusqu’à 100 Mo par fichier, gratuitement et sans compte.

Jusqu’à 100 fichiers à la fois. Les formats mélangés ne posent pas de problème.

Un fichier Parquet n’est pas quelque chose qu’on peut regarder

C’est un conteneur binaire. `head` dessus affiche les quatre octets PAR1 puis un écran de bruit, `grep` n’y trouve rien de fiable parce que les valeurs sont compressées et encodées par dictionnaire, et `wc -l` rapporte un nombre sans rapport avec le nombre de lignes. Le fichier est conçu pour être lu par un moteur, et si la machine n’a pas de moteur, le fichier est opaque.

C’est la situation à laquelle cette conversion s’adresse : un extrait Parquet sur un serveur, un portable sans droits administrateur, un conteneur avec rien d’installé, ou un fichier que quelqu’un a envoyé avec une question qui demande une réponse dans les deux minutes. Le transformer en lignes est le chemin le plus court pour pouvoir commencer à y répondre.

Pourquoi la tabulation est le bon délimiteur pour un pipeline

Les valeurs dans un extrait de données sont pleines de virgules — adresses, noms de produits, texte libre, nombres écrits dans une locale européenne. Un fichier séparé par virgules doit entourer tout cela de guillemets, et chaque consommateur du fichier doit implémenter correctement citations, guillemets échappés et sauts de ligne avant de pouvoir trouver une limite de colonne.

Les tabulations sont quasi absentes de ce type de données, donc le délimiteur et le contenu cessent d’être en concurrence. Après cette conversion, `cut -f3` trouve la troisième colonne, `awk -F"\t"` la trouve aussi, et `sort -t$'\t' -k2` trie sur la deuxième. Rien n’a à analyser ; les choses n’ont qu’à séparer. C’est toute la différence de fiabilité entre les deux délimiteurs, et c’est pourquoi un vidage tabulé peut être traité correctement par une commande shell d’une seule ligne.

La seule valeur qui continuera de casser un outil positionnel

Une tabulation dans une valeur est l’exception. Elle est plus rare dans des données venues d’un fichier Parquet que dans des données venues d’un tableur, mais cela arrive — les champs en texte libre portent ce qui y a été collé à l’origine. Quand cela se produit, le convertisseur écrit ce champ entouré de guillemets, parce que l’alternative est une ligne qui gagne silencieusement une colonne.

Cette sortie est correcte et un vrai parseur la gère. `cut -f` non : il compte les caractères tabulation et n’a jamais entendu parler d’un guillemet, donc à partir de cette ligne il voit un champ de trop et tout ce qui suit est décalé d’un. Si un pipeline produit des résultats décalés sur quelques lignes parmi un million, `grep -c '"' output.tsv` vous dira en une seconde si c’est la raison.

Les horodatages sortent sous une forme qui se trie

Une colonne d’horodatage est écrite comme une chaîne ISO 8601 — `2024-03-11T09:30:00.000Z` — ce qui est la seule réponse sensée dans un format sans type date. Elle a une propriété qui compte beaucoup dans un shell : elle se trie chronologiquement avec un tri lexicographique ordinaire, parce que les champs vont du plus significatif au moins.

`sort -k4` sur une colonne de date fait donc ce que vous vouliez, `uniq -c` sur les dix premiers caractères compte les lignes par jour, et un filtre sur une plage est une comparaison de chaînes. Rien de tout cela ne marche sur une date en format local, et rien ne marche sur un nombre epoch sans arithmétique. C’est un des rares cas où convertir en texte rend une opération plus facile plutôt que plus dure.

Les colonnes imbriquées arrivent en JSON, et jq prend le relais

Parquet porte nativement listes, structures et maps. Une ligne de texte ne le fait pas, donc une colonne imbriquée est écrite en JSON dans son champ : une liste arrive comme `["a","b"]`, une structure comme un objet avec les noms de ses membres.

C’est volontairement le format que quelque chose d’autre peut lire. `cut -f5 output.tsv | jq ".[0]"` tire le premier élément de chaque liste, et l’imbrication survit au passage plutôt que d’être aplatie en colonnes dont il faudrait ensuite deviner les noms. Comme le champ ne contient ni tabulation ni retour à la ligne, aucun guillemet n’est ajouté autour et le pipeline reste simple. Les colonnes binaires sans annotation texte sont écrites en hexadécimal minuscule pour une raison connexe : c’est réversible, cela ne contient pas de délimiteur, et personne ne le confondra avec du texte.

Les nulls deviennent des champs vides, et ce que cela cache

Un null est écrit comme un champ vide. Chaque ligne garde le même nombre de tabulations, donc le fichier reste rectangulaire et les outils positionnels restent alignés, ce qui est le comportement qu’il faut.

Cela efface aussi une distinction que le fichier source faisait soigneusement. Parquet enregistre la nullabilité par colonne et distingue un null d’une chaîne vide ; dans la sortie, les deux sont les mêmes zéro caractères entre deux tabulations. Si vous comptez les valeurs manquantes, `awk -F"\t" '$3==""'` compte les deux ensemble et aucune commande shell ne peut les séparer à nouveau. Là où cela compte, obtenez le compte depuis la source avec un moteur de requête plutôt que depuis le texte.

Le schéma n’est pas dans le texte, donc lisez-le d’abord

Tout ce que le fichier Parquet savait de ses colonnes — le type de chacune, le nombre de lignes, les statistiques par colonne — vit dans un pied de page, et rien de tout cela ne survit dans un fichier tabulé. La sortie a une ligne d’en-têtes et après ce sont des caractères.

Si vous avez un moyen de lire le schéma, lisez-le avant de convertir et notez-le. `DESCRIBE SELECT * FROM "file.parquet"` dans DuckDB l’imprime en une instruction. Là où vous n’avez rien du tout, le texte lui-même est la seule preuve disponible, et le geste sensé est de vérifier quelques valeurs distinctes par colonne avec `cut -f2 | sort -u | head` plutôt que de supposer qu’une colonne de chiffres est une quantité.

Combien de texte un petit fichier Parquet produit

Parquet est compressé et encodé par dictionnaire, donc le texte dans lequel il se déploie est couramment plusieurs fois la taille du fichier et souvent bien davantage. Une colonne de codes de statut répétés ne coûtait presque rien dans la source et coûte une copie complète par ligne dans la sortie.

Cela vaut la peine d’être estimé avant de convertir un fichier que vous n’avez pas regardé, parce que la table déployée est gardée en mémoire pendant la conversion. Un extrait de cent mégaoctets peut produire beaucoup plus que cent mégaoctets de texte, et le plafond ici arrive plus vite que la taille sur disque ne le suggère.

L’extrait est lu ici et rien n’est envoyé

Le lecteur Parquet est une bibliothèque chargée à la demande par cette page et l’écriture est du JavaScript ordinaire. Aucune requête ne transporte le fichier, donc un extrait pris au milieu d’une plateforme — d’ordinaire la version non agrégée, non masquée — ne devient pas une copie sur le serveur de quelqu’un d’autre pour être lu.

Il n’y a pas de file et pas de compte, et le plafond est de 100 Mo par fichier. Pour un fichier assez gros pour être un problème, la réponse est un moteur de requête plutôt qu’un convertisseur plus grand, et c’est de toute façon une meilleure réponse parce qu’il permet de ne prendre que les colonnes qui vous intéressent.

Quand installer DuckDB plutôt que de convertir

Si vous pouvez installer quelque chose, installez DuckDB. Il lit le fichier Parquet sur place sans étape d’import, imprime le schéma en une instruction, répond à la question que vous aviez vraiment avec une clause WHERE, et ne matérialise jamais la table entière. Convertir en texte est strictement moins bon à chaque fois que cette option existe.

Cette conversion est pour quand elle n’existe pas : une machine verrouillée, le portable d’un collègue, un fichier arrivé par e-mail, une question de cinq minutes qui ne justifie pas une installation. C’est aussi le bon choix quand la destination est vraiment un pipeline texte — un script awk existant, un diff contre le vidage d’hier, un collage dans un outil qui prend du tabulé en entrée.

Comment convertir Parquet en TSV

  1. Déposez votre fichier Parquet sur cette page, ou cliquez pour en choisir un.
  2. Choisissez TSV comme destination. La conversion se fait dans votre navigateur et le fichier n’est pas téléversé.
  3. Téléchargez le fichier TSV terminé.

Parquet et TSV : ce qui change

Parquet face à TSV
ParquetTSV
Nom completApache ParquetTab-Separated Values
Extension de fichier.parquet.tsv, .tab
Type de médiaapplication/vnd.apache.parquettext/tab-separated-values
CompressionSans perte — rien n’est écarté
Première publication20131993
Publié parApache Software Foundation
SpécificationIANA text/tab-separated-values
LicenceStandard ouvertStandard ouvert
Situation actuelleActuelActuel
S’ouvre dans un navigateurAucun navigateurAucun navigateur
Envisagé à la placeCSV, JSONCSV, JSON

Ce qui est conservé

Rien n’est écarté. Parquet et TSV enregistrent leur contenu sans perte : la conversion change l’emballage, pas la qualité, et elle peut être répétée sans que les dégâts s’accumulent.

Ce que le format cible apporte

TSV est un format de travail, Parquet un format fini. Ce qui revient est du texte modifiable plutôt qu’une image de la page — c’est en général la raison de la conversion, et aussi sa limite.

Ouvrir le résultat

pandas lit aussi bien Parquet que TSV : vous pouvez comparer le résultat à l’original sans second logiciel.

À quoi sert chaque format

TSV date de 1993, décrit par IANA text/tab-separated-values. Microsoft Excel, LibreOffice Calc et pandas le lisent.

TSV a été publié en 1993 et Parquet en 2013. Le plus ancien est en général le fichier le plus sûr à remettre ; le plus récent fait le même travail en moins d’octets.

De Parquet à TSV : questions fréquentes

Mon fichier Parquet est-il téléversé quelque part ?

Non. Cette conversion se fait entièrement dans votre navigateur : le fichier ne quitte donc pas votre appareil. Vous pouvez le vérifier vous-même — ouvrez l’onglet réseau des outils de développement et convertissez quelque chose. Vous verrez la page elle-même et les requêtes de statistiques et de publicité qui financent ce service, et pas une seule qui transporte votre fichier. Le moteur de cette paire précise est parquet-wasm, une version WebAssembly du lecteur Apache Arrow ; votre navigateur le télécharge une fois puis le garde en cache.

Convertir Parquet en TSV est-il gratuit ?

Oui. Pas de compte, pas de filigrane et pas de quota journalier à dépenser : cela tourne sur votre propre machine, vous pouvez donc revenir autant de fois que vous voulez. Le navigateur traite des fichiers jusqu’à 100 Mo, 100 à la fois. parquet-wasm est téléchargé sur votre machine et s’y exécute, et c’est pourquoi rien n’est compté.

Y a-t-il une perte de qualité en convertissant Parquet en TSV ?

Non. TSV enregistre le même contenu sans rien jeter : le résultat est identique en qualité à l’original.

La conversion de Parquet à TSV est-elle sans perte ?

Rien n’est écarté. Parquet et TSV enregistrent leur contenu sans perte : la conversion change l’emballage, pas la qualité, et elle peut être répétée sans que les dégâts s’accumulent.

Le fichier TSV est-il modifiable ensuite ?

TSV est un format de travail, Parquet un format fini. Ce qui revient est du texte modifiable plutôt qu’une image de la page — c’est en général la raison de la conversion, et aussi sa limite.

En savoir plus sur ces formats