Использование Pig и Python - PullRequest
       13

Использование Pig и Python

4 голосов
/ 08 июля 2011

Извиняюсь, если этот вопрос сформулирован плохо: я начинаю крупномасштабный проект машинного обучения, и мне не нравится программирование на Java.Я люблю писать программы на Python.Я слышал хорошие вещи о свинье.Мне было интересно, может ли кто-нибудь объяснить мне, как использовать Pig в сочетании с Python для математически связанной работы.Кроме того, если я хочу написать «потоковый код Python», входит ли Jython в картину?Является ли это более эффективным, если он входит в картину?

Спасибо

PS: Я по нескольким причинам не предпочел бы использовать код Махута как есть.Я мог бы хотеть использовать некоторые из их структур данных: было бы полезно знать, возможно ли это сделать.

Ответы [ 3 ]

4 голосов
/ 17 января 2012

Другой вариант использования Python с Hadoop - PyCascading . Вместо того, чтобы писать только пользовательские функции в Python / Jython или использовать потоковую передачу, вы можете собрать всю работу вместе в Python, используя функции Python как «пользовательские функции» в том же сценарии, где определен конвейер обработки данных. Jython используется в качестве интерпретатора Python, а инфраструктура MapReduce для потоковых операций - Cascading . Объединения, группировки и т. Д. Работают подобно духу Свиньи, поэтому нет ничего удивительного, если вы уже знаете Свинья.

Пример подсчета слов выглядит следующим образом:

@map(produces=['word'])
def split_words(tuple):
    # This is called for each line of text
    for word in tuple.get(1).split():
        yield [word]

def main():
    flow = Flow()
    input = flow.source(Hfs(TextLine(), 'input.txt'))
    output = flow.tsv_sink('output')

    # This is the processing pipeline
    input | split_words | GroupBy('word') | Count() | output

    flow.run()
2 голосов
/ 08 июля 2011

Когда вы используете streaming в pig , не имеет значения, какой язык вы используете ... все, что он делает - выполняет команду в оболочке (например, через bash). Вы можете использовать Python так же, как вы можете использовать grep или программу на C.

Теперь вы можете определять UDF для Pig в Python изначально . Эти UDF будут вызываться через Jython, когда они выполняются.

0 голосов
/ 09 июля 2011

В книге Programming Pig обсуждается использование UDF.Книга незаменима в целом.В недавнем проекте мы использовали пользовательские функции Python и иногда возникали проблемы с несовпадениями чисел Floats и Doubles, поэтому будьте осторожны.У меня сложилось впечатление, что поддержка пользовательских функций Python может быть не такой надежной, как поддержка пользовательских функций Java, но в целом она работает довольно хорошо.

...