2013-11-22 2 views
1

Я сталкивался с проблемой выяснить, что эти строки ниже на самом деле означает:UDFs разделяемые контекст Свиньи

При использовании объекта в ехес метод, имейте в виду, что любые изменения, сделанные к возвращаемым Свойства не будут переданы других экземпляров UDF на внутреннем интерфейсе, если не случится иметь другой экземпляр той же UDF в одной и той же задачи

Это строки из книги программирования свинки (стр 131) , и для того, чтобы поставить вас в контекст все это как делать с UDF в Pig и контекстом выполнения, который все экземпляры одного и того же UDF могут совместно использовать контекст из интерфейса (компиляция) в бэкэнд (Running).

БУДЬ Я не понимаю, у всех есть, в чем смысл этой линии

...you happen to have another instance of the same UDF in the same task 

Что я забираю из этого является то, что имеет некоторое отношение к спекулятивного исполнения, то есть спекулятивная задача фактически использует один и тот же экземпляр UDF с обычной задачей, запущенной ранее (в контексте Pig), иначе я полностью ошибаюсь в понимании того, как я все это понимаю.

ответ

0

Я угадываю здесь, поэтому я бы не возражал против какой-либо проверки от кого-то еще.

Я предполагаю, что вы можете иметь один и тот же экземпляр того же UDF в той же задаче, если вы вызываете UDF несколько раз. Я не думаю, что они говорят о спекулятивном исполнении. Например .:

B = FOREACH A GENERATE udf1(col1), udf1(col2), udf1(col3); 

Я полагаю, что это пытается объяснить, что вы не можете изменить состояние/контекст в ОДС и ожидать, что она распространяется на другие. Класс создается несколько раз, один раз для каждой задачи в целом.

Смежные вопросы