2013-03-13 4 views
6

設定されたjsonドキュメントをPIGにロードする際に問題が発生しました。 私が持っているものは、彼らが持っているフィールドがすべて変わる多くのjsonドキュメントです。私が必要とするフィールドはほとんどのドキュメントにあり、whareがない場合はnull値を取得したいと考えています。さまざまなスキーマを持つjsonをPIGにロード

私はちょうどこれがまだ解決されていないことを確認するために、最新のPigバージョン(apache gitリポジトリから0.12)をダウンロードしてコンパイルしました。しかしとき

{"foo":1,"bar":2,"baz":3} 

私はこの

Json1 = LOAD 'test.json' USING JsonLoader('foo:int,bar:int,baz:int'); 
DESCRIBE Json1; 
DUMP Json1; 

を使用してPIGにこれをロードすると、私は期待される結果

Json1: {foo: int,bar: int,baz: int} 
(1,2,3) 

を得る:

私は何を持っていることは、このようなJSON文書でありますスキーマ内のフィールドの順序が異なります。

Json2 = LOAD 'test.json' USING JsonLoader('baz:int,bar:int,foo:int'); 
DESCRIBE Json2; 
DUMP Json2; 

私は、望ましくない結果が得られます。

(3,2,1) 

されている必要があります

Json2: {baz: int,bar: int,foo: int} 
(1,2,3) 

はどうやらスキーマ定義のフィールド名は、JSONでのフィールド名とは何の関係もありません。

私が必要とするのは、jsonファイル(埋め込みドキュメントあり!)から特定のフィールドをPIGに読み込むことです。

どうすれば解決できますか?

+2

残念ながら、JsonLoaderは設定したスキーマに関係なく、フィールドをそのまま順番に読み込みます。 –

答えて

6

これはPigの最新バージョンでさえも既知の問題だと思います。したがって、より機能の高いJsonLoaderを使用する以外に簡単な方法はありません。

代わりにElephant Bird JSONLoaderを使用してください。これは、予想通りに動作します。言い換えれば、フィールドの順序付けです。

+0

ありがとう、これは動作します。 –

関連する問題