0

「|」を使用したテキスト入力があります セパレータとして

0.0000|25000|                    |BM|BM901002500109999998|SZ

PigStorageを使用して分割しました

A = LOAD '/user/hue/data.txt' using PigStorage('|');

ここで、フィールドBM901002500109999998を位置に基づいて異なるフィールドに分割する必要があります 。たとえば、0-2 = BM - Field1 などとします。したがって、このステップの後、BM、90100、2500、10、9999998 を取得する必要があります。Pig スクリプトでこれを達成する方法はありますか。それ以外の場合は、UDF を作成し、必要な位置にセパレーターを配置する予定です。

ありがとう。

4

2 に答える 2

3

あなたが探しているSUBSTRING

A = LOAD '/user/hue/data.txt' using PigStorage('|');
B = FOREACH A GENERATE SUBSTRING($4,0,2) AS FIELD_1, SUBSTRING($4,2,7) AS FIELD_2, SUBSTRING($4,7,11) AS FIELD_3, SUBSTRING($4,11,13) AS FIELD_4, SUBSTRING($4,13,20) AS FIELD_5;

出力は次のようになります。

dump B;
(BM,90100,2500,10,9999998)

この機能の詳細については、こちらを参照してください。

于 2015-05-19T15:58:28.440 に答える