シーケンスファイルからavroに移行する簡単な方法はありますか?
-
21-12-2019 - |
質問
現在、Writablesのシーケンスファイルを使用してHadoop MapReduceジョブを使用しています。 同じ書き込み型は、システムの非ハドープ関連部分においてもシリアル化に使用されます。
この方法は、主にスキーマが不足しており、バージョン変更の手動処理の必要性のために主に維持するのが困難です。
Apache Avroはこれらの問題を処理するように見えます。
問題は、移行中に両方のフォーマットでデータを持つことです。 移行を処理する簡単な方法はありますか?
解決
一般に、AVROデータやシーケンスファイルを交換可能に使用することから停止するものは何もありません。必要なデータの種類に必要なINPUTFORMATが必要であれ、出力の場合も、実質的なフォーマットを使用することは理にかなっています。あなたの入力が異なる形式で来るならば、
Avroへの移動は賢明な動きです。あなたが時間とハードウェアの容量を持っているならば、それはあなたのデータをシーケンスファイルからすぐにAVROに明示的に変換することを明示的に変換することさえあるかもしれません。これを行うためにシーケンスファイルをサポートするためにもavroでサポートされている任意の言語を使用できます。 Javaは確かに(はっきり)しますが、豚はこれをするためにもかなり便利です。
PiggyBankプロジェクトに貢献したPiggybankプロジェクトには、シーケンスファイルを読み取るための機能がありますが、適切なAVROスキームを使用して同じPiggyBankプロジェクトからAVRoStorageを使用することの問題です。
豚のみがファイルからavroスキーマをロードした場合。あなたが豚を使うならば、あなたは残念ながらavroスキーマを明示的に含むスクリプトを作成する必要があります。これは少し迷惑になる可能性があります。
他のヒント
私は自分で試していませんが、AvroSequenceFile
フォーマットを使用することは役に立ちます。これはSequenceFile
のまわりであるため、理論的には、古いSequenceFile
フォーマットと新しいAvro
フォーマットの両方でデータを書き込む必要があります。
これはこのフォーマットについて