5

この質問の表現が不十分である場合はお詫びします。私は大規模な機械学習プロジェクトに着手しており、Java でのプログラミングは好きではありません。Python でプログラムを書くのが大好きです。ピグについて良いことを聞いたことがあります。Pig を Python と組み合わせて、数学的に関連する作業にどのように使用できるかを誰かが説明してくれるかどうか疑問に思っていました。また、「ストリーミング python コード」を書く場合、Jython は関係しますか? 絵に入った方が効率的ですか?

ありがとう

PS: 私はいくつかの理由から、Mahout のコードをそのまま使用することを好みません。私はそれらのデータ構造のいくつかを使用したいと思うかもしれません: それが可能かどうかを知ることは役に立ちます.

4

3 に答える 3

5

Hadoop で Python を使用する別のオプションはPyCascadingです。Python/Jython で UDF のみを記述したり、ストリーミングを使用したりする代わりに、データ処理パイプラインが定義されているのと同じスクリプトで Python 関数を「UDF」として使用して、ジョブ全体を Python でまとめることができます。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()
于 2012-01-17T07:00:56.400 に答える
3

pig でストリーミングを使用する場合、使用する言語は関係ありません...シェルでコマンドを実行するだけです(bash経由など)。grepC プログラムを使用できるのと同じように、Python を使用できます。

Python で Pig UDF をネイティブに定義できるようになりました。これらの UDF は、実行時に Jython を介して呼び出されます。

于 2011-07-08T12:34:20.783 に答える
0

Programming Pigブックでは、UDFの使用について説明しています。本は一般的に不可欠です。最近のプロジェクトでは、Python UDF を使用しましたが、時々 Float と Double の不一致の問題が発生したため、注意してください。私の印象では、Python UDF のサポートは Java UDF のサポートほどしっかりしていないかもしれませんが、全体としてはうまく機能します。

于 2011-07-08T20:10:59.167 に答える