私は様々な列を含むDataFrameを持っています。 1つの列には、Map [Integer、Integer []]が含まれています。 それは{ 2345 -> [1,34,2]; 543 -> [12,3,2,5]; 2 -> [3,4]}
のようになります 私がする必要があるのはいくつかのキーをフィルターにかけることです。 私は、このようなすなわちSpark DataFrameのMapTypeを抽出またはフィルタリングする
col(x).keySet.isin(javaIntSet)
ことをフィルタするべきで、Javaの整数の集合(javaIntSet)を持っています。上記のマップにはキー2と543のみが含まれ、他の2つは含まれていない必要があり、フィルタリング後に{543 -> [12,3,2,5]; 2 -> [3,4]}
のように表示されます。
Java列クラスの使用方法に関するドキュメントはまばらです。 col(x)を抽出して、javaでフィルタリングしてから、セルデータをフィルタリングされたマップに置き換えることができます。または、私が見落としている列の便利な機能がありますか? 書くことができますUDF2<Map<Integer, Integer[]>,Set<Integer>,Map<Integer,Integer[]>
UDF1<String,String>
と書くことができますが、もっと複雑なパラメータでどのように動作するかはわかりません。
一般に、javaIntSetは十数行で、通常は100未満の値です。マップには通常、一握りのエントリしかありません(通常は0-5)。
私はJavaでこれを行う必要があります(残念ながら)が、私はScalaに精通しています。自分自身をJavaに変換するScalaの答えは、すでに非常に役に立ちます。
shame OPはこの回答を確認していません!非常に非常に良い例ダビデはあなたに感謝 – dedpo