問題タブ [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.
apache-pig - Apache Pig Latin のリファレンス マニュアル
Pig は、非常に大きなファイルを処理するためのデータフロー プログラミング環境です。Pig の言語は Pig Latin と呼ばれます。
PigLatinの優れたリファレンスマニュアルを知っている人はいますか? 言語のすべての構文とコマンドの説明を含むものを探しています。残念ながら、Pig wiki の wiki ページは壊れています。
hadoop - PIG(Hadoop)で入力をサブストリングに分割する
Pigに次の入力があると仮定します。
そして、私はそれを次のように変換したいと思います。
私は(まだ)ピッグラテン語のchararrayを反復処理する方法を見つけていません。TOKENIZE関数を見つけましたが、それは単語の境界で分割されます。それで、「pig latin」はこれを行うことができますか、それともこれを行うためにJavaクラスを必要とするものですか?
python - このデータベース要約タスクを高速に実行するには、どの言語を使用できますか?
そこで、私は小さなデータ処理タスクを処理するPythonプログラムを作成しました。
これが私が望む計算の構成言語での非常に簡単な仕様です:
つまり、各行について、単語、浮動小数点数、および別の単語を解析します。それらをプレーヤーID、スコア、および日付と考えてください。各プレイヤーの上位5つのスコアと日付が必要です。データサイズは簡単ではありませんが、巨大ではありません。約630メガバイト。
同様に短く(以下のPythonのように)、はるかに高速にするために、実際に実行可能な言語をどのように記述すべきかを知りたいです。
入力データの例を次に示します。
これが私がそれから得た出力です:
、には7つの値があり、値が上位5から外れるため、との値3
を削除します。値が1つしかないため、その「上位5」はその1つの値のみで構成されます。c
d
bb
4
これは、MySQLで同じクエリを実行するよりも高速に実行されます(少なくとも、クエリを実行する方法で)が、ほとんどの時間をPythonバイトコードインタープリターに費やしていると確信しています。別の言語では、おそらく1分あたりではなく1秒あたり数十万行を処理できると思います。ですから、より高速な実装の言語で書きたいと思います。
しかし、どの言語を選ぶべきかわかりません。
これをSQLで単一のクエリとして表現する方法を理解できていません。実際
select * from foo into outfile 'bar';
、入力データだけでもMySQLの機能に感心していません。
Cは当然の選択ですが、line.split()
2タプルのリストの並べ替え、ハッシュテーブルの作成などでは、標準ライブラリにないコードを記述する必要があるため、14行ではなく100行以上のコードになります。
C ++の方が良い選択のようですが(標準ライブラリに文字列、マップ、ペア、およびベクトルがあります)、コードはSTLでかなり乱雑になるようです。
OCamlは問題ありませんが、同等のものがありline.split()
ますか?そのマップのパフォーマンスについては悲しいですか?
Common Lispは機能するかもしれませんか?
ループを高速コードにプッシュダウンできる、このようなデータベース計算用のMatlabに相当するものはありますか?誰かが豚を試しましたか?
(編集:サンプルの入力および出力データを提供することでdavethegr8のコメントに応答し、Pythonプログラムのバグを修正しました!)
(追加編集:うわー、このコメントスレッドはこれまでのところ本当に素晴らしいです。ありがとう、みんな!)
編集:
2007年にsbcl-develで不気味に似た質問がありました(ありがとう、Rainer!)。awk
これは、いくつかのテストデータを生成するためのWill Hartungのスクリプトです(実際のデータのジップの分布はありませんが)。
amazon - Amazon Mapreduce で実行される pig スクリプトの STREAM キーワード
別のpythonプログラムをアクティブにする豚のスクリプトがあります。自分の Hadoop 環境では実行できましたが、Amazon map reduce WS でスクリプトを実行すると必ず失敗します。
ログは言う:
org.apache.pig.backend.executionengine.ExecException: エラー 2090: 削減計画の処理中にエラーを受け取りました: '' 終了ステータスで失敗しました: org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce で 127。 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.processOnePackageOutput(PigMapReduce.java:288) の runPipeline(PigMapReduce.java:347) org.apache.pig.backend.hadoop.executionengine.mapReduceLayer. PigMapReduce$Reduce.reduce(PigMapReduce.java:260) org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapReduce$Reduce.reduce(PigMapReduce.java:142) org.apache.hadoop.mapred.ReduceTask. run(ReduceTask.java:321) at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2216)
何か案が?
hadoop - Apache Pig から SequenceFile にデータを保存する
Apache Pigは PiggyBank を使用して Hadoop シーケンス ファイルからデータをロードできますSequenceFileLoader
。
REGISTER /home/hadoop/pig/contrib/piggybank/java/piggybank.jar;
DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();
log = LOAD '/data/logs' USING SequenceFileLoader AS (...)
Pig から Hadoop シーケンス ファイルへの書き込みを可能にするライブラリもありますか?
hadoop - EvalFunc ピッグ UDF で例外をスローすると、その行だけがスキップされますか、それとも完全に停止しますか?
ログ ファイル内の行を解析し、情報を pig に返すために Java で記述されたユーザー定義関数 (UDF) があるため、すべての処理を行うことができます。
次のようになります。
私の質問は、IOException をスローした場合、完全に停止するか、それとも例外をスローしない残りの行の結果を返すかということです。
例: これを pig で実行します
この入力で:
それは 2 行を処理し、「ログ」には 2 つのタプルがありますか、それとも単に火事で死ぬのでしょうか?
statistics - Hadoop を使用した単純な統計計算の例
私は既存のクラスタリング アルゴリズムを拡張して非常に大きなデータ セットに対処したいと考えており、データのパーティションで計算できるように再設計しました。これにより、並列処理への扉が開かれます。私は Hadoop と Pig を検討してきましたが、実用的な開始点として、データの基本的な統計 (算術平均と分散) を計算することから始めるのがよいと考えました。
私はしばらくグーグルで検索してきましたが、適切なキーワードを使用していない可能性があり、この種の計算を行うための優れた入門書となるものを実際に見つけられなかったので、ここで質問しようと思いました.
Hadoopを使用して平均と分散を計算する方法の良いサンプルを教えてください。また、サンプルコードを提供してください。
ありがとう
hadoop - Yahoo PigLatin UDF内からDataBagにファイルをロードするにはどうすればよいですか?
2つのバッグ間の最小中心を計算しようとしているPigプログラムがあります。それが機能するためには、バッグを単一のデータセットにグループ化する必要があることがわかりました。全体の操作には時間がかかります。UDF内のディスクからバッグの1つを開くか、COGROUPを使用せずに別の関係をUDFに渡すことができるようにしたい......
コード:
基本的に私の問題は、特許ごとにサブリレーション(ワードカウント、kcenters)を渡す必要があるということです。これを行うために、クロスを実行してから、PatentNumberによるCOGROUPを実行して、セットのPatentNumber、{wordcounts}、{kcenters}を取得します。UDF内から関係を渡す方法やセンターを開く方法を見つけられれば、PatentNumberで単語数をグループ化し、myudfs.kmeans(wordcount)を実行できます。これは、CROSS/COGROUPがなくてもはるかに高速です。
これは費用のかかる操作です。現在、これには約20分かかり、CPU/RAMに影響を与えているようです。CROSSがないともっと効率がいいのではないかと思っていました。速くなるかどうかわからないので、実験してみたいと思います。
とにかく、Pig内からLoading関数を呼び出すには、evalfuncから取得しないPigContextオブジェクトが必要なようです。また、hadoopファイルシステムを使用するには、いくつかの初期オブジェクトも必要ですが、取得方法がわかりません。だから私の質問は、PIG UDF内からhadoopファイルシステムからファイルを開くにはどうすればよいですか?また、デバッグのためにmain経由でUDFを実行します。したがって、デバッグモードのときに通常のファイルシステムからロードする必要があります。
もう1つのより良いアイデアは、CROSS/COGROUPを必要とせずにリレーションをUDFに渡す方法があるかどうかです。これは、特にリレーションがメモリ内にある場合に理想的です。つまり、kcentersを使用したCROSS / COGROUPを必要とせずに、myudfs.kmeans(wordcounts、kcenters)を実行できます。
ただし、基本的な考え方は、IOをRAM/CPUサイクルと交換することです。
とにかく、どんな助けでも大いに感謝されるでしょう、PIG UDFは、UDFマニュアルでさえ、最も単純なものを超えてあまりよく文書化されていません。
mapreduce - Cassandra の Map Reduce を Pig ありまたはなしで使用するには?
MapReduce が Cassandra .6 でどのように機能するかを誰か説明できますか? 単語カウントの例を読みましたが、Cassandra 側と「クライアント」側で何が起こっているのかよくわかりません。
https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/
たとえば、Python と Pycassa を使用しているとします。新しい map reduce 関数をロードして呼び出すにはどうすればよいでしょうか。map reduce 関数は、cassandra サーバーにインストールされている Java でなければなりませんか? もしそうなら、どのように Pycassa から呼び出すことができますか?
これをすべて簡単にする Pig についての言及もありますが、私は完全な Hadoop 初心者なので、あまり役に立ちませんでした。
あなたの答えはThriftなどを使用できます。クライアント側を示すためにPycassaについて言及しました。Cassandraクラスターで実行されるものと、リクエストを行う実際のサーバーとの違いを理解しようとしています。
regex - 豚の正規表現マッチング
apache pig とテキストの使用
「兄は何も悪いことをしていない」と一致させようとしています。
理想的には、「my brother just」で始まり、句読点 (文の終わり) または EOL で終わるものと一致させたいと考えています。
豚のドキュメントを見て、次に java.util.regex.Pattern へのリンクをたどると、使用できるはずだと思います
しかし、それは最後まで一致するようです。この試合を実行するための提案はありますか? 髪を抜く準備ができました。髪を抜くということは、Python ストリーミングに切り替えることを意味します。