データの受け渡しや分析処理の出力として、拡張子が「.orc」のファイルを受け取ることがあります。
どんな列が入っているのか、何行あるのか、実際の値はどうなっているのか。まず中身を確認したいだけなのに、そのために実行環境を準備するのは手間です。
Browser KittyのORC Viewerでは、ORCファイルをブラウザで開き、行数、列の構造、圧縮方式、列統計、実際のレコードを確認できます。閲覧専用なので、元のORCファイルを書き換えることはありません。選択したファイルも、解析のためにサーバーへアップロードしません。
この記事では、受け取ったORCファイルの全体像を確認し、必要なデータを表示して、現在のページをCSVへ保存するまでの流れを紹介します。
ORCファイルとは?
ORCは、列ごとにデータをまとめて保存する、分析処理向けのファイル形式です。数値や文字列だけでなく、列の型や、配列・入れ子になったデータの構造も保持できます。Apache HiveやHadoopのデータ処理を効率化するために開発されました。
CSVのように、テキストを区切り文字で並べただけの形式ではありません。中身を確認するときは、ORCの構造を解釈できるビューアや処理ツールを使います。
ORC Viewerでは、主に「ファイルを開く → 行数・圧縮方式を確認 → 列の構造を見る → 列統計を見る → 実際のデータを見る」の順で確認すると分かりやすくなります。
最初からすべての行を追うのではなく、「何が入ったファイルなのか」を先につかむ使い方です。
1. ORCファイルを選択する
ORC Viewerを開き、「ファイルを選択」から確認したい.orcファイルを選びます。PCでは、ファイルを画面へドラッグ&ドロップして追加することもできます。
複数のORCファイルを追加し、切り替えながら確認することもできます。ただし、複数ファイルのデータを自動的に結合する機能ではありません。それぞれ別のファイルとして扱います。
たとえば日別のファイルを受け取ったなら、まず1つ開いて構造を確認し、別の日のファイルへ切り替えて同じように確認します。
2. ファイル情報で行数・圧縮方式・ストライプを確認する
読み込んだら、まず「ファイル情報」を見ます。
ORC Viewerでは、行数、列数、ストライプ数、圧縮方式などの情報に加えて、メタデータやストライプの構成を確認できます。これらは、ORCの末尾にあるPostScriptやFooterという情報を読み取って表示します。
ファイル名が同じように見えても、中身が空だったり、想定と異なるデータが出力されていたりするかもしれません。レコードを1行ずつ読む前に、全体の規模を確認しておきます。
- 想定した件数のデータが入っているか
- 列の数が想定と大きく違っていないか
- どの圧縮方式が使われているか
ストライプは、ORC内部のデータのまとまり
ストライプは、ORCファイルの内部でデータを分割して保存する単位です。
別々のファイルが入っているという意味ではなく、1つのORCファイルの中に複数のまとまりがあります。それぞれに行データや索引などが含まれ、ファイル末尾の情報と組み合わせて読み取れます。
ORC Viewerは、データを表示するときに、現在のページに必要なストライプを読み込む構成です。ファイル全体の行データを最初から一度に表へ展開する方式ではありません。
3. スキーマで列名と型を確認する
次に「スキーマ」を確認します。
スキーマとは、どんな列があり、それぞれがどの型の値を持つかを示す情報です。ORC Viewerでは、階層を見やすいTreeと、構造をテキストで確認するRawを切り替えられます。
たとえば注文データなら、次のような構成が考えられます。これは説明用の例です。
値を見る前に列の型を確認しておくと、「数値に見えるのに文字列だった」「1セルに複数の商品が入っていた」といった違いに気付きやすくなります。
| 列の例 | 確認したいこと |
|---|---|
| order_id | 注文番号が数値なのか文字列なのか |
| amount | 金額が整数なのか、小数を扱う型なのか |
| ordered_at | 注文日時がどの型で保存されているか |
| customer | 顧客情報が複数の項目を持つ構造になっているか |
| items | 注文明細が配列として入っているか |
入れ子になったデータも確認する
ORCには、複数の項目をまとめるstruct、配列に相当するlist、キーと値の組を持つmap、複数の型を扱うunionなどがあります。ORC Viewerでも、読み取り処理が対応するこれらの構造を確認できます。
たとえばcustomerの中にnameやaddressがあるなら、列名だけでなく、その下にどんな項目があるかまで見ておきます。
先に構造を確認してからデータプレビューへ進むと、値の意味を追いやすくなります。
4. 列統計でデータ全体の傾向を確認する
「列統計」では、ORCファイルに記録されている列ごとの統計情報を確認できます。
ORCは、ファイル全体やストライプ単位の統計を保持できる形式です。値の件数やnullの有無、型によっては最小値・最大値などが記録されます。
ORC Viewerの列統計は、ファイル全体に対して記録された統計情報を表示します。現在表示している数十行だけを、その場で集計した結果ではありません。
たとえば統計が記録されていれば、「IDの範囲は想定どおりか」「nullが入っている列はあるか」「数値列に想定外の小さい値や大きい値が含まれていないか」を確認する手掛かりになります。
表示できる統計項目は、列の型やファイルに保存されている情報によって異なります。値が表示されていない項目を、ゼロや「問題なし」と読み替えないようにします。
また、統計だけでは個々のレコードまでは分かりません。気になる点があれば、次のデータプレビューで実際の値を確認します。
5. Table・Recordで実際のデータを見る
「データプレビュー」では、レコードをTableまたはRecordで確認できます。
Tableは、複数の行を表として見比べる表示です。Recordは、1件ごとの内容を追いたいときに使えます。「列」から表示する列を選ぶこともできます。
列が多いデータでは、最初からすべての列を見る必要はありません。確認したいID、日時、金額などへ絞ると、必要な値を追いやすくなります。
入れ子の値はセルの詳細で確認する
配列や複数項目を含むセルは、表の中だけでは読み取りにくいことがあります。
その場合はCell Inspector(セルの内容)を開いて確認します。スキーマで把握した構造と照らし合わせながら見ると、配列の中の値や、入れ子になった項目の関係を追いやすくなります。
並べ替えは現在ページの範囲内
ここは注意が必要です。ORC Viewerの並べ替えは、現在表示しているページ内だけが対象です。ファイル全体を並べ替える処理ではありません。
たとえば、1万行のファイルから最初の100行を表示し、金額の大きい順に並べ替えたとします。
そこで先頭に来た行は、「その100行の中で金額が大きい行」です。1万行全体の最大値を持つ行とは限りません。
ファイル全体に記録された列統計と、現在ページの並べ替えは、確認している範囲が違います。
6. 必要なページをCSVとして保存する
表示中のデータを別の場所で確認したい場合は、「CSVをコピー」または「CSVを保存」を使えます。
ただし、CSV出力の対象は現在ページだけです。ORCファイル全体を一括変換する機能ではありません。
たとえば、先頭の100行を確認しているなら、そのページを確認用のCSVとして保存する使い方になります。
少量のデータ例を共有したい、表示している範囲を手元で比較したい、といった用途に向いています。
一方、全件をCSVへ変換して移行したい場合や、SQLで条件に合う行を抽出したい場合は、このビューアの対象外です。また、バイナリ列は省略された表示になるため、CSVを元データの完全なバックアップとして使うことはできません。
ORCファイルを開けないときに確認すること
拡張子が.orcでも、ファイル内部の構造や圧縮方式によっては読み込めない場合があります。
ORC Viewerが案内している圧縮方式の対応範囲は次のとおりです。特にZSTDは、「このブラウザでも必ず開ける」とは限りません。LZOは現在の対応範囲に含まれていません。
読み込めない場合は、まず、ファイルを作成した側で圧縮方式を確認できるか調べます。ダウンロードやコピーが途中で止まっていないか、元のファイルとサイズが大きく違っていないかを確認するのも切り分けの一つです。
開けない理由を、すぐに「文字化け」や「文字コードの問題」と決めつけず、ファイル形式や圧縮方式から確認します。
| 圧縮方式 | 対応 |
|---|---|
| NONE(圧縮なし) | 対応 |
| ZLIB / SNAPPY / LZ4 | 対応 |
| ZSTD | ブラウザ側に対応するデコーダーがある場合 |
| LZO | 非対応 |
大きなORCファイルを見るときの注意点
ORC Viewerは、現在ページに必要なストライプをデコードしてデータを表示します。ファイル全体を一度に展開しない点は、部分的に中身を確認するときに役立ちます。
ただし、表示行数が少なければ、処理するデータ量も必ず少ないわけではありません。
ORC内部ではストライプというまとまりでデータが保存されています。そのため、必要な行を含むストライプが大きければ、少ない行を表示するときでも、それに対応する読み込みや展開が必要になります。
「100行だけ表示しているから、100行分のメモリしか使わない」とは考えない方がよいでしょう。
大きなファイルでは、まず概要とスキーマを確認し、必要なページへ絞って見るのがおすすめです。ページ内の一部を確認しただけで、全件に問題がないと判断しないことも大切です。
ファイルはブラウザ内で処理される
ORC Viewerでは、選択したORCファイルの読み込み、構造の解析、データ表示、現在ページのCSV作成をブラウザ内で行います。
Web版の起動時にはアプリ本体のHTMLを取得しますが、選択したORCファイルを解析のために外部サーバーへアップロードする方式ではありません。保存した単一HTML版は、対応ブラウザでオフラインでも利用できます。
ただし、会社や組織のデータを扱う場合は、端末内処理であっても所属先の利用ルールを確認してください。
ORC Viewerでできること・できないこと
ORC Viewerは、受け取ったデータを調べるための閲覧ツールです。
行数や圧縮方式を把握し、スキーマと列統計を確認して、必要なレコードを見る用途に向いています。現在ページをCSVへ保存することもできます。
一方、ORCの編集・再生成、SQLの実行、ファイル全体のCSV変換には対応していません。
「データを集計・加工したい」のか、「まず何が入っているか確認したい」のかを分けて考えると、使いどころが分かりやすくなります。
ORCの中身は、全体像から順に確認する
見慣れないORCファイルを受け取ったときは、最初からすべての行を追う必要はありません。
まず行数や圧縮方式を見て、次にスキーマで列の意味を把握し、列統計と実際のレコードを照らし合わせます。
特に、ファイル全体の情報と、現在ページだけの操作を混同しないことがポイントです。
Browser KittyのORC Viewerは、ORCファイルの全体像をつかみ、確認したい部分へ進むためのビューアとして使えます。
ORCファイルを確認する手順のまとめ
- ORC Viewerを開き、.orcファイルを選択またはドラッグ&ドロップします。
- ファイル情報で行数、列数、圧縮方式、ストライプの構成を確認します。
- スキーマのTree / Rawで列名、型、入れ子の構造を確認します。
- ファイル全体に記録された列統計で、値の件数やnull、利用できる最小値・最大値を確認します。
- Table / RecordとCell Inspectorで必要なページの実際の値を確認します。
- 必要に応じて現在ページをCSVとしてコピーまたは保存します。全件出力ではない点に注意してください。
ORC Viewer
Apache ORCのスキーマ・Stripe・列統計・メタデータ・圧縮方式・データをブラウザ内で確認します。
注意点
- 現在ページを並べ替えても、ファイル全体の最大値や最小値の行を探したことにはなりません。
- 列統計に表示されない項目をゼロや「問題なし」と判断せず、記録されている情報の範囲で確認します。
- CSV出力は現在ページの確認用です。全件変換や、バイナリ列を含む元データの完全なバックアップには使えません。
よくある質問
ORCファイルを開くためにPythonなどの準備は必要ですか?
ORC Viewerで対応範囲のファイルを確認するだけなら必要ありません。ブラウザでツールを開き、端末内の.orcファイルを選択します。
ORC全体をCSVへ変換できますか?
このビューアのCSV保存は現在ページだけが対象です。ORC全体の一括変換やSQLによる全件抽出には対応していません。
表の並べ替えは全レコードが対象ですか?
いいえ。現在ページだけを並べ替えます。ファイル全体の列統計とは対象範囲が異なります。
ZSTDやLZOで圧縮されたORCを開けますか?
ZSTDはブラウザ側に対応するデコーダーがある場合に利用できます。LZOは非対応です。NONE / ZLIB / SNAPPY / LZ4は対応範囲です。
選択したORCファイルはアップロードされますか?
いいえ。Web版では最初にアプリ本体のHTMLを取得しますが、選択したORCの読み込み、解析、表示、現在ページのCSV作成はブラウザ内で行います。
参考資料
ORCの構造や統計はApache ORCの公式資料を、ビューアの操作と対応範囲はORC Viewerの公開README・ソースを参照しています。対応範囲はORC形式自体の機能と同じではありません。
- Apache ORC ORCの概要と型
- Apache ORC ORC v1ファイル形式仕様
- Apache ORC 索引と列統計
- ORC Viewer 使い方・対応範囲・制限事項
- ORC Viewer 現在ページの並べ替え・CSV出力の実装