Hadoop レコード I/O には、レコードのシリアル化と逆シリアル化を簡素化するクラス ファイルとレコード記述言語インタープリターが含まれています。
はじめに
非常に複雑なソフトウェア システムには、外部とデータを交換するメカニズムが必要です。データ対話には通常、入出力データ論理ユニット (ファイル、ネットワーク接続、メモリ バッファなど) のパケット化とアンパックが含まれます。アプリケーションには、データ型をシリアル化および逆シリアル化するためのネストされたオペコードが含まれることがよくあります。シリアル化には、コードの自動生成を可能にするいくつかの機能があります。特定の出力エンコード形式 (バイナリ、XML など) を指定すると、基本データ型のシリアル化と基本データ型の組み合わせは機械的なタスクになります。シリアル化コードを手動で作成すると、特にレコードに多くのフィールドがある場合、またはレコードの定義がバージョン間で異なる場合にバグが発生しやすくなります。最後に、異なるプログラミング言語で書かれたアプリケーション間のデータ交換にも役立ちます。アプリケーションによって操作されるデータ レコードを言語に依存しない方法で記述し、その記述を使用してさまざまなターゲット言語での実装を導き出すことで、これが容易になります。このドキュメントでは、Hadoop レコード I/O について説明します。その目的は次のようなメカニズムです:
1) シリアル化されたデータ型の簡単な仕様を提供します
2) さまざまなターゲット言語で上記の型のカプセル化とアンパックのためのコード生成を提供します
3) アプリケーション プログラマーが生成されたコードをアプリケーションに統合できるように、ターゲット固有の事前調査サポートを提供します。
Hadoop レコード I/O は、XDR、ASN.1、PADS、ICE などのメカニズムをターゲットとします。これらのシステムには、ほとんどのレコード タイプの正規 DDL ファイルが含まれていますが、他の多くの点で異なります。 Hadoop レコード I/O は、データのシリアル化と多言語サポートに重点を置いています。翻訳者に基づいてシリアル化を行うことができます。 Hadoop ユーザーは、単純なデータ記述言語を使用してデータを記述する必要があります。 Hadoop DDL トランスレーター rcc がコードを生成し、ユーザーは単純な読み取りおよび書き込みデータ フロー抽象化を呼び出すことでデータの読み取りおよび書き込みを行うことができます。次に、Hadoop レコード I/O の目標と非目標をいくつかリストします。
目標:
1) よく使用される基本タイプをサポートします。 Hadoop には、サポートしたい一般的な組み込み型が含まれている必要があります。
2) 複合タイプ (再帰的合成を含む) をサポートします。 Hadoop は、構造体やベクターなどの複合型をサポートする必要があります。
3) さまざまなターゲット言語でのコード生成。 Hadoop は、さまざまなターゲット言語でのシリアル化コードの生成をサポートし、適切に拡張できる必要があります。初期ターゲットは C++ と JAVA です。
4) ターゲット言語のサポート。 Hadoop には、ターゲットをアプリケーションに適切に統合できるように、ターゲットをサポートするヘッダー ファイル、ライブラリ、またはパッケージが組み込まれている必要があります。
5) 複数の異なる出力エンコード形式をサポートします。カプセル化されたバイナリ、カンマ区切りテキスト、XML などを使用できます。
6) 下位互換性または上位互換性のあるレコード タイプをサポートします。
非目標:
1) 任意の C++ ファイルをシリアル化します。
2) ツリー、リンク リストなどの複雑なデータ構造をシリアル化します。
3) 組み込みのインデックス作成、圧縮、またはチェックサム。
4) XML から生成された動的に構築されたエンティティ。
以降のドキュメントでは、主に Hadoop レコード I/O の特性について詳しく説明します。パート 2 ではシステムでサポートされるデータ型について説明し、パート 3 では簡単な記録例の DDL 構文について説明し、パート 4 では rcc を使用したコード生成のプロセスについて説明し、パート 5 ではターゲット言語のマッピングと Hadoop 型のサポートについて説明します。 C++ マッピングの比較的完全な説明があり、今後のドキュメント更新には Java およびその他の言語が含まれる予定です。最後のセクションでは、出力エンコーディングのサポートについて説明します。
以上がHadoopレコードIの特徴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。