0

Я пытаюсь получить простую PigActivity для работы в Data Pipeline. http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-pigactivity.html#pigactivityИспользование AWS Data Pipeline PigActivity

Поля ввода и вывода необходимы для этого действия. У меня есть оба варианта использования S3DataNode. Оба этих DataNodes имеют directoryPath, которые указывают на мой s3 вход и выход. Первоначально я пытался использовать Filepath но получил следующее сообщение об ошибке:

PigActivity requires 'directoryPath' in 'Output' object. 

Я использую специальный скрипт свиньи, также расположенный в S3.

Мой вопрос: как я могу ссылаться на эти пути ввода и вывода в моем сценарии?

В примере, приведенном в ссылке, используется поле сцены (которое может быть отключено/включено). Я понимаю, что это использовалось для преобразования данных в таблицы. Я не хочу этого делать, поскольку также требуется указать поле dataFormat.

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

Я отключил постановку, и я пытаюсь получить доступ к данным в моем сценарии следующим образом:

input = LOAD '$Input'; 

Но я получаю следующее сообщение об ошибке:

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

Я попытался с помощью :

input = LOAD '${Input}'; 

Но Я тоже получаю сообщение об ошибке.

Существует необязательное поле scriptVariable. Нужно ли мне использовать какое-то отображение?

ответ

0

Только с помощью

НАГРУЗКИ 'URI для вашего s3'

будет работать.

Обычно это делается для вас при постановке (создание таблицы), и вам не нужно обращаться к URI непосредственно из сценария и указывать его только в S3DataNode.

0

Убедитесь, что свойство «stage» для «pigActivity» установлено верно.

После того, как я сделал, что ниже сценарий начал работать для меня:

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); 
Смежные вопросы