質問

現在、Writablesのシーケンスファイルを使用してHadoop MapReduceジョブを使用しています。 同じ書き込み型は、システムの非ハドープ関連部分においてもシリアル化に使用されます。

この方法は、主にスキーマが不足しており、バージョン変更の手動処理の必要性のために主に維持するのが困難です。

Apache Avroはこれらの問題を処理するように見えます。

問題は、移行中に両方のフォーマットでデータを持つことです。 移行を処理する簡単な方法はありますか?

役に立ちましたか?

解決

一般に、AVROデータやシーケンスファイルを交換可能に使用することから停止するものは何もありません。必要なデータの種類に必要なINPUTFORMATが必要であれ、出力の場合も、実質的なフォーマットを使用することは理にかなっています。あなたの入力が異なる形式で来るならば、マルチ入力。基本的に、あなたはまだ別々のマッパーを実装する必要がありますが、それは地図入力キー/値が異なることを考慮して追放されるべきです。

Avroへの移動は賢明な動きです。あなたが時間とハードウェアの容量を持っているならば、それはあなたのデータをシーケンスファイルからすぐにAVROに明示的に変換することを明示的に変換することさえあるかもしれません。これを行うためにシーケンスファイルをサポートするためにもavroでサポートされている任意の言語を使用できます。 Javaは確かに(はっきり)しますが、豚はこれをするためにもかなり便利です。

PiggyBankプロジェクトに貢献したPiggybankプロジェクトには、シーケンスファイルを読み取るための機能がありますが、適切なAVROスキームを使用して同じPiggyBankプロジェクトからAVRoStorageを使用することの問題です。

豚のみがファイルからavroスキーマをロードした場合。あなたが豚を使うならば、あなたは残念ながらavroスキーマを明示的に含むスクリプトを作成する必要があります。これは少し迷惑になる可能性があります。

他のヒント

私は自分で試していませんが、AvroSequenceFileフォーマットを使用することは役に立ちます。これはSequenceFileのまわりであるため、理論的には、古いSequenceFileフォーマットと新しいAvroフォーマットの両方でデータを書き込む必要があります。

これはこのフォーマットについて

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top