使用 Pig 和 Python

dvk*_*dvk 5 jython apache-pig

如果这个问题措辞不当,请见谅:我正在着手一个大规模的机器学习项目,我不喜欢用 Java 编程。我喜欢用 Python 编写程序。我听说过关于猪的好消息。我想知道是否有人可以向我澄清 Pig 与 Python 结合用于数学相关工作的可用性。另外,如果我要编写“流式 python 代码”,Jython 会出现吗?如果它确实出现在图片中是否更有效?

谢谢

PS:出于几个原因,我不喜欢按原样使用 Mahout 的代码。我可能想使用他们的一些数据结构:知道这是否可行会很有用。

小智 5

将 Python 与 Hadoop 结合使用的另一种选择是PyCascading。您可以在 Python 中将整个工作放在一起,而不是在 Python/Jython 中只编写 UDF,而是在定义数据处理管道的同一脚本中使用 Python 函数作为“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()
Run Code Online (Sandbox Code Playgroud)


Don*_*ner 3

当您在 pig 中使用流式传输时,使用什么语言并不重要......它所做的只是在 shell 中执行命令(例如通过 bash)。您可以使用 Python,就像使用grepC 程序一样。

您现在可以在 Python 中本地定义 Pig UDF。这些 UDF 在执行时将通过 Jython 进行调用。