問題タブ [cascading]
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.
hadoop - 販売データの集計に使用されるカスケード パイプラインの簡素化
私はCascadingとHadoopの両方に非常に慣れていないので、優しくしてください... :-D
私は自分自身が何かを過度に設計していることに気付いていると思います。基本的に私の状況は、9 つのフィールドを持つパイプで区切られたファイルを持っているということです。異なるグループ化を使用して、これらの 9 つのフィールドの集計統計を計算したいと考えています。結果は 10 個のフィールドで、そのうち 6 個だけがカウントまたは合計になります。これまでのところ、Unique パイプは 4 つ、CountBy パイプは 4 つ、SumBy は 1 つ、GroupBy は 1 つ、Every は 1 つ、Each は 2 つ、CoGroup は 5 つ、その他数個です。別の小さな機能を追加する必要がありますが、それを行う唯一の方法は、2 つのフィルター、さらに 2 つの CoGroup、およびさらに 2 つの各パイプを追加することです。これは、いくつかの集約された統計を計算するためだけにやり過ぎのように思えます。だから私は本当に何かを誤解していると思っています。
私の入力ファイルは次のようになります。
アイテム タイプは、在庫、サービス、またはグループ アイテムの「I」、「S」、または「G」のいずれかであり、顧客はグループに属します。残りは自明であるべきです
私が望む結果は次のとおりです。
プロジェクト ID は定数です。顧客の訪問数は、顧客が来て何かを購入した月の日数です。
私が現在使用している設定では、ソースとして TextDelimited Tap を使用してファイルを読み取り、DateParser を使用してトランザクションの日付を解析し、年、月、日のフィールドに追加する Each パイプにレコードを渡します。ここまでは順調ですね。これが制御不能になるところです。
そこからのストリームを 5 つの個別のストリームに分割して、必要な集計フィールドのそれぞれを処理しています。次に、すべての結果を 5 つの CoGroup パイプに結合し、Insert (プロジェクト ID を挿入するため) を介して結果を送信し、TextDelimited シンク Tap を介して書き込みます。
そのように5つのストリームに分割するよりも簡単な方法はありますか? 最初の 4 つのストリームは、フィールドが異なるだけでほぼ同じことを行います。たとえば、最初のストリームは Unique パイプを使用して一意の InvoiceID を取得し、次に CountBy を使用して、同じ storeID、年、月を持つレコードの数をカウントします。これにより、店舗ごとに年月ごとに作成された一意の請求書の数がわかります。次に、groupID で同じことを行うストリームと、customerID で行う別のストリームがあります。
これを簡素化するためのアイデアはありますか? もっと簡単な方法があるはずです。
hadoop - 部分集約とコンバイナーはどちらが速いですか?
カスケード/スカルディングがマップ側の評価を最適化する方法についての通知があります 。彼らはいわゆる部分集計を使用しています。コンバイナーよりも実際に良いアプローチですか?いくつかの一般的な Hadoop タスク (単語数など) でのパフォーマンスの比較はありますか? もしそうなら、hadoop は将来これをサポートしますか?
scala - タイムアウトを使用してscalaで操作を実行するにはどうすればよいですか?
コンテキスト:ページをクロールするためのスキャルディングジョブ(hadoop)を記述し、URL抽出でタイムアウトを設定したい(URLConnectionでタイムアウトなし、他のタイムアウトの場合の一般的なソリューションが必要)、つまりマップ関数。
それはメモリクリティカルなコードであるため、すべてのリソースが解放された後、いくつかのタイミングの後に殺される先物について考えています。ScalaAPIで何を使用するかわからない。
hadoop - ワークフローツールの比較:Oozieとカスケード
複雑なmap-reduceジョブを実行するためのワークフローツールを探しています。私はOozieを念頭に置いていますが、カスケードについても調べたいと思っています。カスケードAPIを使用して既存のM/Rジョブをチェーンするサンプルコードまたは例はありますか?また、OozieとCascadingの比較を教えてください。
hadoop - Hadoopカスケードを使用したスキーマの変更
時間の経過とともにスキーマが追加されるデータのアーカイブに対してカスケードを使用する方法を理解しようとしています。添加剤とは、たとえば3列から始まるという意味です。次のリリースでは、5つの列が含まれる可能性があります。これらの列は、標準のCSVレイアウトに従います。私の理解では、スキーマを5列の長さに指定し、古いスキーマが3列しかない場合、カスケードは失敗します。
欠落している列を埋めるようにカスケードに指示する方法はありますか?デフォルトのように=null?
cascading - scalding を使用した HBase からの読み取り
私は Cascading/Scalding に非常に慣れていないため、HBase からデータを読み取るのが難しいことを理解できません。
私は、ポーカー ゲームのハンド履歴が格納されているテーブルを HBase に持っています (非常に簡単な方法で: id -> hand, serialized with ProtoBuf
)。以下のジョブは、履歴全体を調べて、すべてのプレイヤーの辞書を作成する必要があります。
ただし、上記のジョブを実行すると、エラーがスローされます
、つまり、取得したデータは、flatMap
直接操作できるバイト配列ではありません。
私は何が欠けていますか?
java - 特殊文字で区切られた Hadoop でテキスト ソースを読み取る方法
私のデータ形式は、改行の代わりに \0 を使用しています。そのため、デフォルトの hadoop textLine リーダーは機能しません。特殊文字で区切られた行を読み取るように設定するにはどうすればよいですか?
LineReader を設定できない場合は、特定のストリーム プロセッサ (tr "\0" "\n") を適用することが可能かもしれませんが、これを行う方法はわかりません。
hadoop - Hadoop Cascading - create flow with one source, two sinks
I am using Cascading 2 to create Hadoop jobs and am trying to create a flow that starts with a single source. After a couple of functions are applied to the data I need to split the flow so that this data is used to create two separate reports (in two separate sinks).
Currently this is giving me the error "java.lang.IllegalArgumentException: cannot add duplicate sink: firstPipe" but even after messing around with it for a while I get a variety of other issues to do with the flow set up.
Is it possible for someone to explain how to construct a flow of this form (one source, two sinks)? Do I need to create a Cascade instead? Or do I need an intermediate sink to hold the data before I split?
Please help!
java - カスケード例はコンパイルに失敗しましたか?
シェルcleanJar
では、Impatient/part1ディレクトリにgradleと入力しました。出力は以下のとおりです。エラーは「org.apache.hadoop.mapred.JobConfのクラスファイルが見つかりません」です。なぜコンパイルに失敗したのですか?