問題タブ [udf]
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.
java - Pig Java UDF 解析文字列は位置に基づいており、生成されたキーを持つ部分文字列を含むバッグを返します
String フィールドである列があります。この文字列を読み取り、バッグに保存し、キーも与える必要があります (したがって、JSON として保存すると、一意の.
私のデータファイルの例は次のとおりです: "test, kyle"
出力を次のようにしたい: {"test":[{"key": "test"}, {"value":"kyle"}]}
私が抱えている問題は、次の行です。
基本的に、タプルから読み取った各値には異なる識別キーが必要です。これにより、これが Pig で終了したときに、追加したこれらの新しい列を参照できます。
私はまだ Pig、特に UDFS に慣れていないので、さらに情報が必要な場合はお知らせください。
java - Pig Java UDF: 入力パラメーターに基づく動的タプル スキーマの生成
編集:私がやりたいことを一般的に説明しようとします。
入力の 1 行は次のようになります: field1、field2、textfield
現在、テキストフィールドは固定文字数の文字列エントリです。この文字列を解析して、これらの文字から部分文字列を抽出したいと考えています。たとえば、最初の 10 文字を抽出してフィールドにし、次の 15 文字を抽出してフィールドにするなど...
その部分は問題ありません。問題は、各行に同じテキストフィールド ルールが含まれていないことです。基本的に、 field1とfield2は、そのテキスト フィールドを解析するために使用するキーを表します。マップ内のこのキーは、(出力で使用するために) 抽出しているすべてのフィールド名の配列と、文字列内の各フィールドの長さ (解析できるようにするため) を指します。
私が抱えている問題は、各出力が異なるフィールドと値を持つバッグになることです。10 個のタプルを持つバッグを持つ行もあれば、5 または 6 を持つバッグを持つ行もあります。exec 関数でスキーマを定義する方法が必要です。
編集:
私の主な目標は、UDF 入力パラメーターを使用してルックアップ マップを使用し、出力スキーマを導出できるようにすることです。投稿の残りの部分は参照としてここに残しますが、私の主な目標は、入力パラメーターを使用してマップにアクセスし、フィールド タイプの配列を取得できるかどうかを学習または確認することです。
それぞれがエイリアスまたはキーを持つタプルのバッグを返そうとしています。タプルのエイリアスとして使用する必要がある文字列の配列を含むマップがあります。UDF へのユーザー入力に基づいて、スキーマを含む正しい配列をフェッチします。
ユーザーの入力があるため、これは私の実行機能で正常に機能しています。しかし、その入力を出力スキーマにも利用する方法がわかりません。
UDF 入力の場合、最初のパラメーターと 2 番目のパラメーターを組み合わせたものが、配列を取得するためのキーになります。3 番目のパラメーターは、配列ごとに異なる特定の文字間隔で解析する必要がある大きなテキスト フィールドです。
**ここでは、入力に使用するスキーマを決定するために、ユーザーの入力に基づいて以下の配列にアクセスする方法が必要です。ここにジャンクをハードコーディングしました。しかし、私の for ループでは、正しい array.length が必要です。次に、フィールド スキーマを設定するときに、array[i] を使用します。
しかし、この関数で配列にアクセスできません**
実際には、10 個以上の配列があり、入力によってどの配列とどのスキーマを使用するかが決まります。私はしばらくこれにこだわっていますが、何をしようとしてもそれを得ることができないようです.
hadoop - 豚のUDFにセットアップのような機能はありますか
pig UDF のすべてのマッパーが使用するファイルに mapDB を追加したいと考えています。この mapDB オブジェクトを 1 回だけセットアップするにはどうすればよいですか? pig udf がインスタンス化されたときに一度だけ呼び出される関数はありますか?
ありがとう。
java - Java で記述された pig UDF の入力としての複数のタプル
pig スクリプトからの出力例:
最終的には、Java UDF でヒストグラムを作成したいと考えています。これらすべてを一度に UDF に入力するにはどうすればよいですか?
sql - TD_WEEK_OF_CALENDAR に相当するハイブ
Teradata 用に既に作成されたクエリをHiveで実装しようとしていますが、これweekofyear()
までTD_WEEK_OF_CALENDAR
は、最初の部分的な週は0です。
このメソッドに関連する定義済みの UDF が Hive に他に見つかりませんでした。Java でカスタム UDF を作成する場合でも、 の正確なロジックを取得できませんでしたTD_WEEK_OF_CALENDAR
。
誰かがこれについて助けてくれますか?
hadoop - 特定の値に達するまで列を合計し、行を返す
特定の値に達するまで列の合計を計算する方法を教えてください。ユースケース: 収益の 50% を生み出したトップ製品。
それを行うためのピギーバンクのようなライブラリはありますか、ピギーバンクで見つけることができませんでした。
私はUDFを実装しようとしていますが、唯一の方法が心配です:(。
データ構造は次のようになります-
productId、totalProfitByProduct、totalProfitByCompany、totalRevenueOfCompany。
データは totalProfitByProduct の降順です。totalProfitByCompany、totalRevenueOfCompany はすべての行で同じままです。
ここで、上から上の各製品の totalProfitByProduct に合計を適用し、totalProfitByCompany または totalRevenueOfCompany の 50% 以上を生成した上位の製品を取得したいと考えています。