問題タブ [apache-pig]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3681 参照

hadoop - 別のリレーションで FOREACH を使用するときにリレーションを PIG UDF に渡しますか?

一部のデータを処理するために Pig 0.6 を使用しています。データの列の 1 つは、スペースで区切られた ID のリストです (例: 35 521 225)。これらの ID の 1 つを、次のような 2 列のマッピングを含む別のファイルにマップしようとしています (したがって、列 1 はデータであり、列 2 はサードパーティのデータです)。

35 6009
521 21599
225 51991
12 6129

列の値 ("35 521 225") とファイルからのマッピングを受け取る UDF を作成しました。次に、列の値を分割し、それぞれを反復処理して、渡されたマッピングから最初にマップされた値を返します (これが論理的に機能する方法と考えてください)。

次のように PIG にデータをロードしています。

data = LOAD 'input.txt' USING PigStorage() AS (name:chararray, category:chararray);

mappings = LOAD 'mappings.txt' USING PigStorage() AS (ourId:chararray, theirId:chararray);

次に、生成は次のとおりです。

output = FOREACH data GENERATE title, com.example.ourudf.Mapper(category, mappings);

ただし、エラーは次
のとおりです。

Pig は元のデータで "mappings" という列を見つけようとしているようです。コースがそこにない場合。UDF に読み込まれたリレーションを渡す方法はありますか?

ここで PIG の「Map」タイプが役立つ方法はありますか? それとも、どうにかして値を結合する必要がありますか?

編集: より具体的に言えば、すべてのカテゴリ ID をサード パーティの ID にマップする必要はありません。最初にマップしたかっただけです。UDF はカテゴリ ID のリストを反復処理し、最初にマップされた値が見つかったときに戻ります。したがって、入力が次のようになっているとします。

someProduct\t35 521 225

出力は次のようになります:
someProduct\t6009

0 投票する
19 に答える
208201 参照

hadoop - 豚とハイブの違いは?なぜ両方を持っているのですか?

私のバックグラウンド - Hadoop の世界で 4 週間前。Cloudera の Hadoop VM を使用して、Hive、Pig、および Hadoop に少し手を加えました。Map-Reduce と GFS に関する Google の論文 ( PDF リンク) を読みました。

という事は承知しています-

  • Pig の言語 Pig Latin は (プログラマーの考え方に合うように) SQL からの移行であり、プログラミングの宣言型スタイルに似ており、Hive のクエリ言語は SQL によく似ています。

  • Pig は Hadoop の上に乗っており、原則として Dryad の上にも乗ることができます。私は間違っているかもしれませんが、Hive は Hadoop と密接に結びついています。

  • Pig Latin コマンドと Hive コマンドはどちらも、Map ジョブと Reduce ジョブにコンパイルされます。

私の質問 - 1 つ (Pig など) が目的を果たすことができる場合、両方を持つことの目標は何ですか。Pig が Yahoo! によって宣伝されているからでしょうか。Facebookのハイブ?

0 投票する
1 に答える
218 参照

database - 集約されたウェブログ データから情報を取得する方法は?

集約されたログからデータを取得する方法を知りたいですか? これは私が持っているものです:
- HDFS にロードされる非圧縮ログ データは毎日約 30 GB (これはすぐに約 100 GB に増加します)
これは私の考えです:
- 毎晩、このデータは Pig で処理されます
- ログは読み取られ、分割され、カスタマイズされますUDF は次のようなデータを取得します: timestamp, url, user_id(たとえば、必要なものはこれだけです)
- ログ エントリから、これを HBase にロードします (ログ データは無限に保存されます)。

次に、特定の時間範囲内に特定のページを見たユーザーを知りたい場合は、各クエリでログ データ全体をスキャンすることなく、HBase をすばやくクエリできます (迅速な回答が必要です。数分でもかまいません)。また、複数のクエリが同時に行われます。

このワークフローについてどう思いますか? この情報を HBase にロードすることに意味があると思いますか? 他のオプションとは何ですか? また、それらは私のソリューションとどのように比較されますか? すべてのコメント/質問と回答に感謝します。前もって感謝します。

0 投票する
1 に答える
1231 参照

hadoop - 豚のグループ化されたデータからバイグラムの組み合わせを生成する

入力データを userid,itemid 形式で指定すると、次のようになります。

各グループ内の項目のすべての組み合わせ (順序は重要ではありません) を生成したいと思います。最終的には、グループ内のアイテムに対してジャカードの類似性を実行するつもりです。

理想的には、バイグラムが生成され、出力を次のようにフラット化します。

ユーザー ID を表す文字 ABC は、出力に実際には必要ありません。説明のために表示しているだけです。そこから、ジャカードを計算するために各バイグラムの出現回数を数えます。他の誰かが同様の類似度計算に pig を使用しているかどうかを知りたいです(申し訳ありません!)、すでにこれに遭遇しました。

豚のチュートリアルで提供されている NGramGenerator を見てきましたが、私が達成しようとしているものと実際には一致しません。おそらく Python ストリーミング UDF が適しているかどうか疑問に思っています。

0 投票する
5 に答える
910 参照

python - 大規模なデータセットをグループ化する方法

どちらも整数の 2 つの列を含む単純なテキスト ファイルがあります。

等々..

出力が次のようになるように、データセットを 2 番目の値でグループ化する必要があります。

問題は、ファイルのサイズが約 34 Gb と非常に大きいことです。値を整数の配列として辞書にグループ化する Python スクリプトを作成しようとしましたが、それでも時間がかかりすぎます。array('i')( の割り当てと拡張にはかなりの時間がかかると思いappendます。

現在、疑似分散 Hadoop マシン (Amazon EC3 High Memory Large インスタンス) で実行する予定の豚スクリプトを作成する予定です。

これを行う簡単な方法があれば知りたいと思いました。

更新: このような大きなファイルをメモリに保持することは問題外です。Python ソリューションの場合、最初の実行で 4 回の実行を計画しました。1 から 1000 万の 2 番目の col 値のみが次の実行で考慮されます。1000 万から 2000 万などが考慮されます。しかし、これは本当に遅いことが判明しました。

pig / hadoop ソリューションは、すべてをディスク上に保持するため興味深いものです [ほとんどの場合]。

理解を深めるために、このデータセットには約 4,500 万人の Twitter ユーザーの接続に関する情報が含まれており、ファイル内の形式は、2 番目の数値で指定されたユーザー ID が最初の数値の後に続くことを意味します。

私が使用したソリューション:

0 投票する
1 に答える
3246 参照

mapreduce - Pig 経由で map/reduce ジョブを送信するときに jar をバンドルしますか?

Hadoop、Pig、および Cassandra を組み合わせて、単純な Pig クエリを使用して Cassandra に保存されているデータを操作できるようにしようとしています。問題は、CassandraStorage で実際に動作する Map/Reduce ジョブを Pig に作成させることができないことです。

私がしたことは、自分のクラスタ マシンの 1 つから storage-conf.xml ファイルを contrib/pig (Cassandra のソース ディストリビューション) のマシンの上にコピーし、それらを cassandra_loadfun.jar ファイルにコンパイルしたことです。

次に、すべての jar を含めるように example-script.pig を調整しました。

したがって、私が間違っていなければ、jar は Hadoop に送信されるジョブにバンドルする必要があります。しかし、ジョブを実行すると、例外がスローされます。

リサイクルライブラリが明示的にリストされており、バンドルする必要があるため、どれがわかりませんか?

0 投票する
5 に答える
1526 参照

hadoop - マップ/リデュースで支援できないことが証明されている標準的な問題はありますか?

Hadoop と map/reduce の境界を理解しようとしていますが、map/reduce が役に立たないことがわかっている重要な問題、または問題のクラスを知ることは役に立ちます。

問題の 1 つの要因を変更することで、map/reduce からの単純化が可能になる場合は、確かに興味深いでしょう。

ありがとうございました

0 投票する
11 に答える
47644 参照

hadoop - Pig Latin: Load multiple files from a date range (part of the directory structure)

I have the following scenario-

Pig version used 0.70

Sample HDFS directory structure:

As you can see in the paths listed above, one of the directory names is a date stamp.

Problem: I want to load files from a date range say from 20100810 to 20100813.

I can pass the 'from' and 'to' of the date range as parameters to the Pig script but how do I make use of these parameters in the LOAD statement. I am able to do the following

The following works with hadoop:

But it fails when I try the same with LOAD inside the pig script. How do I make use of the parameters passed to the Pig script to load data from a date range?

Error log follows:

Do I need to make use of a higher language like Python to capture all date stamps in the range and pass them to LOAD as a comma separated list?

cheers

0 投票する
8 に答える
51523 参照

hadoop - Hadoop 内で複数のファイルを 1 つにマージする

複数の小さなファイルを入力ディレクトリに取得し、ローカル ファイル システムを使用したり mapred を作成したりせずに、これらを 1 つのファイルにマージしたいと考えています。hadoof fs コマンドまたは Pig を使用してそれを行う方法はありますか?

ありがとう!

0 投票する
2 に答える
1014 参照

apache-pig - PigスクリプトでRESTfulサービスを呼び出す

私は大きなテキストファイルをロードするPigスクリプト(私の最初)に取り組んでいます。そのテキストファイルのレコードごとに、1つのフィールドのコンテンツをRESTfulサービスに送信して処理する必要があります。評価やフィルタリングは必要ありません。データをキャプチャして送信すれば、スクリプトに何も返す必要はありません。

この種の機能にはUDFが必要だと思いますが、Pigは初めてなので、どのタイプの関数を作成する必要があるのか​​明確に把握できていません。データは最終的にどこかに保存されるので、私の推測ではストア関数ですが、その結論に至るまでの推測作業の量は、私が望むよりも多いように感じます。

洞察やガイダンスをいただければ幸いです。