0

新しい Apache Pig ユーザーはこちら。私は基本的にフォーマットのデータを持っており、これを 6 列に分割して目的のスキーマを作成し、既存のスクリプトを実行するために Pig にロードする必要があります。

以下の形式が乱雑で申し訳ありません。評判スコアのために画像をアップロードできません。

既存のフォーマットには 3 つの列があります
User-Equipment 値::key:bytearray 値:値:bytearray
user1-mobile 20130306-AC 9
user1-mobile 20130306-AT 21
user2-laptop 20130306-BC 0

必要な形式:
ユーザー機器の日付タイプ「カウントまたは時間」値

user1 モバイル 20130306 AC 9

user1 モバイル 20130306 AT 21

これを行う方法について何か提案はありますか? 書く必要がある正規表現はありますか? ここで注意が必要なのは、「タイプ」と列「C または T」を除くすべての列に区切り記号 (-) があることです。

4

1 に答える 1

0

共通の区切り文字がない場合は、次の 2 つの可能性が考えられます。

  1. ここで説明されているように、独自の LoadFunc を実装できます: http://ofps.oreilly.com/titles/9781449302641/load_and_store_funcs.html

  2. ここで説明されているように、 REGEX_EXTRACT_ALLを使用できます: Apache Pig: Extra query parameters from web log

ここで 2. に進みます。

A = LOAD 'abc.txt' AS (line:CHARARRAY);
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, '^(.+?)\\-(.+?)\\s(.+?)\\-(.)(.)\\s(.+)$')) AS (User:CHARARRAY,Equipment:CHARARRAY,Date:CHARARRAY,Type:CHARARRAY,CountorTime:CHARARRAY,Value:CHARARRAY);
于 2013-03-07T10:23:32.053 に答える