1

NetCDF ファイルに格納された一連のデータから始めました。そこから、いくつかの Java コードを作成して、NetCDF ファイルからシーケンス ファイルを作成しました。コードの本来の意図についてはあまり知りませんが、シーケンス ファイル自体については少し知ることができました。最終的に、これらのシーケンス ファイルを使用して Hive 内にテーブルを作成しようとしていますが、現時点では実行できないようです。

シーケンス ファイル内のキーと値は、WritableComparable を実装するオブジェクトとして格納されることがわかっています。また、シーケンス ファイル内のすべてのデータを反復処理する Java コードを作成することもできます。

では、これらのシーケンス ファイルのオブジェクト内のデータを実際に Hive に適切に読み取らせるには何が必要でしょうか?

ありがとうございます!

更新:問題が発生している場所を正確に説明するのが非常に難しい理由は、必ずしもエラーが発生しているわけではないためです。Hive は単にシーケンス ファイルを正しく読み取っていないだけです。シーケンス ファイルで Hadoop -text コマンドを実行すると、次のようなオブジェクトのリストが表示されます。

NetCDFCompositeKey@263c7e3f 、 NetCDFRecordWritable@4d846db5

データはそれらのオブジェクト自体の中にあります。したがって、現在@Tariqの助けを借りて、これらのオブジェクトを実際に読み取るために必要なことは、キーを読み取るカスタムInputFormatと、オブジェクトをシリアル化および逆シリアル化するカスタムSerDeを作成することだと思いますか?

4

1 に答える 1

1

申し訳ありませんが、あなたの質問からは、あなたがどこで問題に直面しているのか正確に理解できません。Hive を介して SequenceFiles を使用する場合は、CREATE TABLE を発行するときに STORED AS SEQUENCEFILE 句を追加するだけです (ほとんどの場合、これは既に知っていることであり、新しいことではありません)。SequenceFiles Hive で作業する場合、SequenceFiles の各キーと値のペアは、通常のファイルの行と同様に扱われます。ここで重要なことは、キーが無視されることです。それを除けば、特別なことは何もありません。

そうは言っても、キーと値の両方を読み取りたい場合は、キーと値の両方を読み取ることができるカスタム InputFormat を作成する必要がある場合があります。たとえば、このプロジェクトを参照してください。SequenceFile のキーに格納されているデータにアクセスできます。

また、キーと値がカスタム クラスの場合は、データをシリアル化および逆シリアル化するために SerDe も記述する必要があります。

HTH

PS : これがまさにあなたが探していたものかどうかはわかりません。そうでない場合はお知らせください。質問に詳細を追加してください。私はそれに対処しようとします。

于 2013-08-06T20:00:59.533 に答える