如果这个问题措辞不好,我深表歉意:我正在着手一个大型机器学习项目,但我不喜欢用 Java 编程。我喜欢用 Python 编写程序。我听说过有关 pig 的好消息。我想知道是否有人可以向我解释 Pig 与 Python 结合起来如何用于数学相关的工作。另外,如果我要编写“流式 python 代码”,Jython 会出现吗?如果它确实出现的话,效率会更高吗?
谢谢
P.S:出于多种原因,我不喜欢按原样使用 Mahout 的代码。我可能想使用他们的一些数据结构:知道这是否可行会很有用。
最佳答案
将 Python 与 Hadoop 结合使用的另一个选项是 PyCascading 。您可以在 Python 中将整个作业放在一起,在定义数据处理管道的同一脚本中使用 Python 函数作为“UDF”,而不是仅在 Python/Jython 中编写 UDF 或使用流式处理。 Jython用作Python解释器,流操作的MapReduce框架是Cascading 。连接、分组等在本质上与 Pig 的工作方式类似,因此如果您已经了解 Pig,那么这并不奇怪。
字数统计示例如下所示:
@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()
关于jython - 使用 Pig 和 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622397/