2016-12-16 1 views
0

私はPigにロードする必要がある以下のキー値形式のデータをいくつか持っています。豚に値の配列を持ついくつかのキーをロード

{"California":["NJ","Seattle","NY"],"NJ":["California","Seattle","NY"],"NY":["NJ","Seattle","California"],"Seattle":["NJ","California","NY"]} 

このデータは1行に取り込まれています。私は究極的には、キーとしてソースと値の配列としてキーにアクセスできるようにする必要があります。

jsonLoader、elephantbird JSONローダーを使用してこのデータをロードする方法はほとんどありませんでしたが、データの代わりに空白が返されていました。

助けてください。

答えて

0

JsonLoaderは、あなたが持っているものとは異なり、定義済みのスキーマが存在すると予想しています。あなたのデータセットはどれくらいですか?それほど大きくない場合は、jsonの文字列全体をとり、必要なタプルの袋に変換する単純なPython/Java UDFを作成する方がよいでしょう。あなたの豚のスクリプトでは、このUDFを呼び出し、返されたバッグにFLATTENを呼び出してください。

+0

ご返信ありがとうございます。可能であれば代替アプローチをチェックしようとする前に、私は一度もUDFを書かなかった。データはあまり大きくありません。あなたが試して調整することができる既存のUDFを知っていますか? –

+0

UDFの作成は非常に簡単です。あなたは、詳細と同じように説明するドキュメントと簡単なチュートリアル/例を見てください:https://pig.apache.org/docs/r0.9.1/udf.html。 Java UDFを作成する場合に使用できる多くのjsonライブラリがJavaにあります。 Pythonにはjsonライブラリがあり、同じものをインポートする必要があります – coder

+0

最終的にすべてのソースをキーとすべての宛先として取得できるようにするには、どのデータ型をJavaにマップするのかはわかりません。ロジックをさらに構築するためには、これらの値をスクリプトで使用する必要があります。緊急性を考えると、以前に誰かがこれをしたかどうかを確認したかったのです。 –

関連する問題