分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ここで NDJSON を Parquet に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
NDJSON から Parquet
Parquet は表形式の列指向フォーマットで、NDJSON のような自由な入れ子構造をそのままでは持てません。この変換はオブジェクトの階層をドットでつないだ列名に平らにし、配列の添字も経路の一部として扱います。
これは JSON を Parquet に書き出すときと同じ処理で、`user.name` や `tags.0` のような列名が生まれます。深く入れ子になったデータほど、列の数は増えます。
書き込みの際、各列の型は列全体の値を見て、真偽値・32 ビット整数・倍精度浮動小数点・文字列の 4 種類のいずれかに決められます。NDJSON が数値として持っていた値でも、ここで型が決め直されます。
32 ビット整数の範囲を超える整数は、64 ビット整数としてではなく浮動小数点として書き込まれます。正確な整数として扱いたい大きな ID がある場合は、この点に注意してください。
ある列のほとんどの行が数値でも、1 行でも数値でない値(空文字列や説明的なテキストなど)が混ざっていれば、その列全体が文字列型として書き込まれます。列の型は行ごとではなく、列全体で 1 つに決まるためです。
数値の列のつもりで用意したデータに、まれに欠損値として空文字が入っているだけで、列全体が文字列になってしまうことがあります。変換後にスキーマを確認する価値があります。
Parquet を読み込む側でも、値の正規化が行われます。64 ビット整数は 2 の 53 乗を超える場合に文字列として扱われ、日付は ISO 形式の文字列に、バイナリは小文字の 16 進数文字列になります。入れ子の値は JSON テキストとして表現されます。
つまり NDJSON から Parquet を経由して別の形式へ戻す往復では、型がもとのまま保たれる保証はありません。Parquet を型忠実な中継地点として使うことはできません。
JSON や NDJSON から CSV、TSV、SQL、INI、XLSX、Parquet へ書き出す場合、すべて同じ「平らにする」処理を経ます。逆に JSON、YAML、TOML、XML、NDJSON へ書き出す場合は、階層構造がそのまま保たれます。
階層を保ったまま別の形式に移したいだけなら、Parquet は向いていません。列指向の分析ツールに読み込ませたい、という目的がある場合にだけ意味を持つ変換です。
解析と書き込みはブラウザーの中で行われ、NDJSON ファイルがサーバーへ送られることはありません。開発者ツールのネットワークタブを開いたまま試せば確認できます。
限界はメモリーです。データ全体をいったんメモリー上に展開してから書き出すため、数百メガバイト規模のファイルではブラウザーのタブが苦しくなり始めます。
| NDJSON | Parquet | |
|---|---|---|
| 正式名称 | Newline-Delimited JSON | Apache Parquet |
| 拡張子 | .ndjson, .jsonl | .parquet |
| メディアタイプ | application/x-ndjson | application/vnd.apache.parquet |
| 圧縮方式 | — | 可逆 — 何も捨てない |
| 最初の公開 | 2013 | 2013 |
| 発行元 | — | Apache Software Foundation |
| ライセンス | オープン標準 | オープン標準 |
| 現在の位置づけ | 現行 | 現行 |
| ブラウザで開けるか | 対応なし | 対応なし |
| 代わりに検討される形式 | JSON, CSV | CSV, JSON |
pandasは NDJSON と Parquet のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。
Parquet は Apache Software Foundation の形式で、2013 年から使われています。pandas、Apache Spark、DuckDBがこの形式を読めます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
NDJSON と Parquet は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 入れ子のオブジェクトは平らにされて列になります。深く入れ子になったデータは形を失います。
変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん Apache Parquet を表示するのに使っているソフトが必要です。