2016-08-09 5 views
1

私はApache Pigを初めて使用しています。ダイナミックな列を持つバッグを作成することは可能ですか? 以下はスクリプト例です。apacheブタの袋用ダイナミックカラム

A = LOAD 'student' USING PigStorage() AS (col1:chararray, col2:chararray, col3:chararray .......); 
B = FOREACH A GENERATE col1, col3; OR 
B = FOREACH A GENERATE col2, col3, col4; 

簡単に列のリストを取得してバッグを作成します。それは可能なのか? ここで必要なのは、動的な列を取得する方法です。例えば。誰かが私のスクリプトをparams = 'col1、col2、col4'で実行するように定義すると、私のスクリプトはこの文字列を解析して、必要な列を取得できるようになります。

答えて

0

私はここMACROのために、スクリプトを使用MACROまたはPARAMETER変数を提案することができます例です

define dividend_analysis (daily, year, daily_symbol, daily_open, daily_close) 
returns analyzed { 
divs = load '/user/data/NYSE_dividends'as (exchange:chararray,  symbol:chararray, date:chararray, dividends:float); 
divisthisyear = filter divs by date matches '.*$year.*'; 
dailythisyear = filter $daily by date matches '.*$year.*'; 
jnd = join divisthisyear by symbol, dailythisyear by $daily_symbol; 
$analyzed = foreach jnd generate $1 ,$daily_close - $daily_open; }; 

daily = load '/user/data/NYSE_daily'as (exchange:chararray, symbol:chararray,  date:chararray, open:float, high:float, low:float, close:float, volume:int,  adj_close:float); 
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close'); 
0
A = LOAD 'student' using PigStorage(','); 

by this relation A contains all columns which has student file.You can access these columns by using sequence number like $0,$1,$2 
$0 --> First column 
$1 --> Second column 
$2 --> third column and so on 
+0

私はここに必要なもの動的な列を取得する方法です。例えば。誰かが私のスクリプトをparams = 'col1、col2、col4'で実行するように定義すると、私のスクリプトはこの文字列を解析して、必要な列を取得できるようになります。 –

関連する問題