Версия UDF для python с Jython / Pig

Когда я делаю Python UDF с Pig, как узнать, какая версия Python используется? Можно ли использовать определенную версию Python?

В частности, моя проблема заключается в моем UDF, мне нужно использовать функцию в математическом модуле math.erf (), которая была недавно введена в Python версии 2.7. У меня есть Python 2.7, установленный на моей машине, и автономная программа Python работает нормально, но когда я запускаю ее в Pig как Python UDF, я получил следующее:

  • Как заставить Hadoop найти импортированные модули Python при использовании Python UDF в Pig?
  • Невозможно передать свиной кортеж в python UDF
  • AttributeError: тип объекта 'org.python.modules.math' не имеет атрибута 'erf'

    Я предполагаю, что Jython использует некоторую версию Python версии до 2.7.

    Спасибо за вашу помощь!

  • Как читать последний МБ очень большого текстового файла
  • InvalidAttributeValException код запуска
  • Вызов Jython из Python (или наоборот)
  • Получение модуля nltk.wordnet Python для работы в Jython
  • Масштабирование части изображения
  • Вызов Python в Java?
  • One Solution collect form web for “Версия UDF для python с Jython / Pig”

    Чтобы получить версию, которую вы используете, вы можете сделать это:

    myUDFS.py

    #!/usr/bin/python import sys @outputSchema('bar: chararray') def my_func(foo): print sys.version return foo 

    Если вы запускаете скрипт локально, версия будет напечатана непосредственно на stdout. Чтобы увидеть выход sys.version при удаленном запуске, вам нужно будет проверить журналы на трекере работы.

    Тем не менее, вы правы в том, что Jython является до-2.7 (вроде). Текущая стабильная версия Jython сейчас составляет 2.5.3 , так что это версия, которую использует Pig. Существует бета-версия версии 2.7.

    Python - лучший язык программирования в мире.