問題タブ [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.

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

performance - 動作するPigAccumulatorInterface実装の良い例はありますか?

HDFSから何百万ものレコードを読み取り、それらを強化して、XMLファイルごとに10KレコードのバッチでXMLファイルとして保存する必要があります。

私はアキュムレータインターフェイスを試し、テストのためにpig.accumulative.batchsizeを2に設定しました。

ただし、呼び出されるメソッドは、Accumulatorの「accumulate」メソッドではなく「exec()」です。

私のUDFクラスの概要は次のとおりです。

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

java - A GenericUDF Function to Extract a Field From an Array of Structs‏

I am trying to write a GenericUDF function to collect all of a specific struct field(s) within an array for each record, and return them in an array as well.

I wrote the GenericUDF (as below), and it seems to work but:

1) It does not work when I am performing this on an external table, it works fine on a managed table, any idea?

2) I am having a tough time writing a test on this. I have attached the test I have so far, and it does not work, always getting 'java.util.ArrayList cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector' or cannot cast String to LazyString', my question is how do I supply a list of structs for the evalue method?

Any help will be greatly appreciated.

The table:

A row of record holds:
1340321132000, 'some_company', [{"productCategory":"footwear"},{"productCategory":"eyewear"}]

This is my code:

My Test:

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

java - 自動インクリメント UDF はハイブで機能しますが、Impala では null を返します

自動増分値を作成する Java 関数を作成し、この関数に基づいてハイブ UDF も作成しました。ハイブでうまく機能します。この関数に基づいて Impala UDF を作成したところ、自動増分整数ではなく「null」が返されました。

Java UDF コードは次のとおりです。

ハイブ UDF の作成:

Impala UDF の作成:

Hive と Impala での使用:

どんな助けでも大歓迎です!ありがとう、アンナ

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

python - Apache Pig での Python UDF の使用

私は Apache Pig と Python を初めて使用します。Pig で Python 関数を登録しようとすると、Jython に関連するエラーが発生します。私の python スクリプトudf1.pyは、文字列を大文字に変換します。

Grunt シェルで Pig ローカル モードに登録しようとすると、以下のエラーがスローされます。

すでに pig_util.py をインポートしました。CDH に jython に関連するものをインストールする必要がありますか?.エラーを知ることができませんでした。

Pig バージョン: Apache Pig バージョン 0.11.0-cdh4.7.0

PyCharm Community Edition 4.0.4 を使用して作成された Python スクリプト

Python バージョン: Python 2.6.6 (r266:84292、2014 年 1 月 22 日、09:42:36)

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

python - Pig スクリプトが UDF を登録できない

作成した Python UDF を使用する単純な Pig スクリプトがあります。UDF 部分を削除すると、スクリプトは正常に完了します。しかし、UDF を登録しようとすると、次のエラーが発生します。

これは私のUDFです:

これは私の豚のスクリプトです:

HUE を使用して Pig を実行しています。データと UDF の両方が同じ HDFS の場所 (pig_test) にあります。

0 投票する
0 に答える
427 参照

java - Pig Java UDF 解析文字列は位置に基づいており、生成されたキーを持つ部分文字列を含むバッグを返します

String フィールドである列があります。この文字列を読み取り、バッグに保存し、キーも与える必要があります (したがって、JSON として保存すると、一意の.

私のデータファイルの例は次のとおりです: "test, kyle"

出力を次のようにしたい: {"test":[{"key": "test"}, {"value":"kyle"}]}

私が抱えている問題は、次の行です。

基本的に、タプルから読み取った各値には異なる識別キーが必要です。これにより、これが Pig で終了したときに、追加したこれらの新しい列を参照できます。

私はまだ Pig、特に UDFS に慣れていないので、さらに情報が必要な場合はお知らせください。

0 投票する
0 に答える
1333 参照

java - Pig Java UDF: 入力パラメーターに基づく動的タプル スキーマの生成

編集:私がやりたいことを一般的に説明しようとします。

入力の 1 行は次のようになります: field1、field2、textfield

現在、テキストフィールドは固定文字数の文字列エントリです。この文字列を解析して、これらの文字から部分文字列を抽出したいと考えています。たとえば、最初の 10 文字を抽出してフィールドにし、次の 15 文字を抽出してフィールドにするなど...

その部分は問題ありません。問題は、各行に同じテキストフィールド ルールが含まれていないことです。基本的に、 field1field2は、そのテキスト フィールドを解析するために使用するキーを表します。マップ内のこのキーは、(出力で使用するために) 抽出しているすべてのフィールド名の配列と、文字列内の各フィールドの長さ (解析できるようにするため) を指します。

私が抱えている問題は、各出力が異なるフィールドと値を持つバッグになることです。10 個のタプルを持つバッグを持つ行もあれば、5 または 6 を持つバッグを持つ行もあります。exec 関数でスキーマを定義する方法が必要です。

編集:

私の主な目標は、UDF 入力パラメーターを使用してルックアップ マップを使用し、出力スキーマを導出できるようにすることです。投稿の残りの部分は参照としてここに残しますが、私の主な目標は、入力パラメーターを使用してマップにアクセスし、フィールド タイプの配列を取得できるかどうかを学習または確認することです。

それぞれがエイリアスまたはキーを持つタプルのバッグを返そうとしています。タプルのエイリアスとして使用する必要がある文字列の配列を含むマップがあります。UDF へのユーザー入力に基づいて、スキーマを含む正しい配列をフェッチします。

ユーザーの入力があるため、これは私の実行機能で正常に機能しています。しかし、その入力を出力スキーマにも利用する方法がわかりません。

UDF 入力の場合、最初のパラメーターと 2 番目のパラメーターを組み合わせたものが、配列を取得するためのキーになります。3 番目のパラメーターは、配列ごとに異なる特定の文字間隔で解析する必要がある大きなテキスト フィールドです。

**ここでは、入力に使用するスキーマを決定するために、ユーザーの入力に基づいて以下の配列にアクセスする方法が必要です。ここにジャンクをハードコーディングしました。しかし、私の for ループでは、正しい array.length が必要です。次に、フィールド スキーマを設定するときに、array[i] を使用します。

しかし、この関数で配列にアクセスできません**

実際には、10 個以上の配列があり、入力によってどの配列とどのスキーマを使用するかが決まります。私はしばらくこれにこだわっていますが、何をしようとしてもそれを得ることができないようです.

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

hadoop - 豚のUDFにセットアップのような機能はありますか

pig UDF のすべてのマッパーが使用するファイルに mapDB を追加したいと考えています。この mapDB オブジェクトを 1 回だけセットアップするにはどうすればよいですか? pig udf がインスタンス化されたときに一度だけ呼び出される関数はありますか?

ありがとう。

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

java - Java で記述された pig UDF の入力としての複数のタプル

pig スクリプトからの出力例:

最終的には、Java UDF でヒストグラムを作成したいと考えています。これらすべてを一度に UDF に入力するにはどうすればよいですか?

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

sql - TD_WEEK_OF_CALENDAR に相当するハイブ

Teradata 用に既に作成されたクエリをHiveで実装しようとしていますが、これweekofyear()までTD_WEEK_OF_CALENDARは、最初の部分的な週は0です。

このメソッドに関連する定義済みの UDF が Hive に他に見つかりませんでした。Java でカスタム UDF を作成する場合でも、 の正確なロジックを取得できませんでしたTD_WEEK_OF_CALENDAR

誰かがこれについて助けてくれますか?