0

データパイプラインで簡単なPigActivityを使用しようとしています。 http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-pigactivity.html#pigactivityAWSデータパイプラインの使用PigActivity

このアクティビティでは、[入力]フィールドと[出力]フィールドが必要です。 S3DataNodeを使用するように設定しています。これらのDataNodeには、s3の入出力を指すdirectoryPathがあります。私はもともとファイルパスを指定してくださいしようとしたが、次のエラーました:私もS3に位置、カスタム豚のスクリプトを使用しています

PigActivity requires 'directoryPath' in 'Output' object. 

を。

私の質問は、これらの入力と出力パスをスクリプトでどのように参照するのですか?

例ではstageフィールドを使用しています(これは無効/有効にすることができます)。私はこれを使ってデータをテーブルに変換することを理解しています。 dataFormatフィールドを指定する必要があるので、これをやりたくありません。

Determines whether staging is enabled and allows your Pig script to have access to the staged-data tables, such as ${INPUT1} and ${OUTPUT1}. 

Iが無効にステージングを持っていると私は次のように私のスクリプト内のデータにアクセスしようとしています:

input = LOAD '$Input'; 

しかし、私は次のエラーを取得:私が使用して試してみました

IOException. org.apache.pig.tools.parameters.ParameterSubstitutionException: Undefined parameter : Input 

を:

input = LOAD '${Input}'; 

しかし、私はこれも誤りです。

オプションのscriptVariableフィールドがあります。ここで何らかのマッピングを使用する必要がありますか?ただ、働くもの

'あなたのS3へのURI'

LOADを使用して

答えて

0

通常、これはステージング(テーブル作成)で行われ、スクリプトから直接URIにアクセスする必要はなく、S3DataNodeで指定するだけです。

0

"pigActivity"の "stage"プロパティがtrueに設定されていることを確認してください。

私は以下のスクリプトは私のために仕事を始めたということでしたら:

part = LOAD ${input1} USING PigStorage(',') AS (p_partkey,p_name,p_mfgr,p_category,p_brand1,p_color,p_type,p_size,p_container); 
grpd = GROUP part BY p_color; 
${output1} = FOREACH grpd GENERATE group, COUNT(part); 
関連する問題