Другой вариант использования 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()