jython - 使用 Pig 和 Python

标签 jython apache-pig

如果这个问题措辞不好,我深表歉意:我正在着手一个大型机器学习项目,但我不喜欢用 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/

相关文章:

hadoop - 像Hive一样分区在Pig中

android - 不匹配的输入'结果期望 RPAREN : While running jython script

python - clojure 使用 scipy 和 numpy

java - SikuliX 1.0rc3 r903 type() 使用普通数字代替小键盘

string - 查找一个字符串是否存在于 Pig 中的另一个字符串中

hadoop - 从 pig 中的分组数据生成二元组合

hadoop - 性能 : Pig vs Hive

datetime - 加载日期时间字段在 pig latin 0.12 中不起作用

java - 我如何处理 Microsoft outlook winmail.dat?还有什么惊喜吗?

java - 如何从 java 运行多线程 python 脚本?