2017-03-27 19 views
0

マップ内に(列名、値)を持つ複数のエントリがあります。今私は列名を持つデータセットをフィルタリングしたい、この列名はキーとしてマップがあり、値はデータセットの特定の列名が持つべき値を定義します。動的にスパークフィルタクエリを構築する

例えば、データセットが列(A、B、C)を有し、マップエントリ{(1)、(B、2)}

は、今ではようで列のデータセットをフィルタリングするたが1とbを2とします。

Javaを使用してこれを達成する方法は何ですか?データセットはデータフレーム、および地図値のみINTSを意味している場合

+0

は、あなたがしようとしているものを投稿してください。あなたの問題の説明はかなり曖昧ですが、正しく理解していれば、forループを使ってマップを反復しようとしています。ループの中で現在の反復のキーを使用したいカラムを選択してください値を持つ列。必要に応じて、最後にデータフレームを結合して戻すことができます。 – Jeremy

答えて

1

は、 このようなコードを使用することができます。

val parametersMap = Map("a" -> 1, "b" -> 2) 
     // condition: a=1 AND b=2 
    val condition = parametersMap.foldLeft("")((result, entry) => result + " AND " + entry._1 + "=" + entry._2).substring(4) 
    val result = dataFrame.filter(condition) 
関連する問題