ピボットしている行の値を列名として使用して、Pig でいくつかのデータをピボットしたいと考えています。これらの値は事前にわかりません。これらの新しい列名を、関連する各値のスキーマとして保存したいと考えています。
これはPivoting in Pigと同じ質問ですが、列名が動的に生成されます。
今、私は次のようなタプルのバッグを持っています
{(C1, V1), (C2, V2), (C3, V3), ... (Cn, Vn)}
そして、私はそれらを次のように変更したいと思います:
dump bag;
{ (V1, V2, V3, ... Vn) }
describe bag;
bag: {C1: chararray,C2: chararray, ... , Cn: chararray}
現在、 をオーバーライドする UDF を使用してこれを実行しようとしていますが、の入力はスキーマ オブジェクトであると想定されており、スキーマ オブジェクトではフィールド値へのアクセスが許可されていないoutputSchema()
ため、列名へのアクセスに問題があります。新しいスキーマを動的に作成する別の方法はありますか?outputSchema()
input.get(<field-num>)
私がスキーマの使用に固執している理由は、最終的には CSV にエクスポートするためです。