3

私はいくつかのカテゴリ的な特徴を持つデータセットを持っています。私は、Sparkフレームワークのこれらのすべてのカテゴリの機能に全く同じ機能を適用しようとしています。私の最初の前提は、各機能の操作を他の機能の操作と並列化できるということでした。しかし、私はそれが可能かどうかを理解できませんでした(thisthisを読んだ後に混乱します)。例えばSpark(Java)を使用して並列にデータセットのすべての列に同じ関数を適用する方法

特長1、特徴2、特長3

ブルー、アップル、ヘビ

オレンジ、オレンジ、サル

ブルー、オレンジ、:私のデータセットは以下の通りであると仮定する馬

各機能の各カテゴリの出現回数を別々に数えたいと思います。

+0

入力データセットが表示されました。出力データセットはどうですか?出力はどのように見えますか? –

+0

各機能の各カテゴリの番号を探したい。たとえば、フィーチャ1の出力は2,1のような配列です。しかしここでは簡単のために、赤、青のようなカテゴリを書いています。私の問題では、各カテゴリをビット表現に変更します。たとえば、最初の機能では2つのカテゴリ(青とオレンジ)があります。私はそれを表現するために2ビットを使用します。赤は10、オレンジは01となります。次に、列単位で合計し、出力は11になります。これは青色の1がオレンジ色の場合は1を意味します。したがって、カウントのような通常の集計は使用できません。私はUDFを使いたい。あなたはそれを書く方法について私を助けてくれますか? –

答えて

1

TL:DR Spark SQLのDataFramesは、列ごとではなく行ごとに分割されるので、Sparkはソースを分割しない限り(列ではなく)タスクごとの行のグループを処理しますselectのような演算子を使用するデータセット。

あなたがしたい場合は:単純に(おそらくjoin付き)groupBycountを使用

別途、

を機能ごとに各カテゴリの出現回数を数えるか、ウィンドウで(ウィンドウを使用集約関数)。

+0

お返事ありがとうございました。グループを使って自分の機能を適用する方法はありますか? https://spark.apache.org/docs/latest/sql-programming-guide.html(タイプセーフなユーザ定義集約関数)の解決策を見つける。しかし、私はそれが私の場合のために働いているとは確かではなく、実際にはそれを理解できませんでした。あなたはそれについて私を助けてくれますか? –

+0

はい。あなたはUDAFを使うことができますが、最初はネイティブの集約関数に固執し、UDAFを最後の手段として使用します。 –

+0

各機能の各カテゴリの番号を探したい。たとえば、フィーチャ1の出力は2,1のような配列です。しかしここでは簡単のために、赤、青のようなカテゴリを書いています。私の問題では、各カテゴリをビット表現に変更します。たとえば、最初の機能では2つのカテゴリ(青とオレンジ)があります。私はそれを表現するために2ビットを使用します。赤は10、オレンジは01となります。次に、列単位で合計し、出力は11になります。これは青色の1がオレンジ色の場合は1を意味します。したがって、カウントのような通常の集計は使用できません。私はUDFを使いたい。私を助けてくれますか? –

関連する問題