UDF関数を使用して、words
の単語セットを反復するスパークデータフレームの文字列に適用します。特定の列の文字列がセットからの単語のいずれかが含まれている場合(下記参照)を求める:Spark(scala)dataframes - 指定された文字列に含まれるセットからの単語のリストを返す
words
セット内のすべての項目のリストを返すように私はこの機能を変更する必要がありますどのように
udf { (s: String) => words.value.exists(word => s.contains(word)) }
文字列に見つかりましたか?
私はwhen
とotherwise
を使用して試してみました:
udf { (s: String) => when(words.value.exists(word => s.contains(word)), word).otherwise(null) }
しかし、私はtype mismatch
を取得し、とにかく、私はこれが唯一の最初の試合を返すと思います。私はスカラとスパークを学んでいるので、どんな提案も大歓迎です。
おかげ@Tzach - 本当であるにはほとんど余りに簡単に聞こえます。私はこれを実行してエラーを受け取りました( 'java.lang.UnsupportedOperationException:型scala.collection.immutable.Set [String]のスキーマはサポートされていません ')。私の「言葉」が不変のセット(放送されている)であることが重要ですか? – renegademonkey
はい、 'words'が' Set [String] 'の場合、UDFの戻り型も' Set [String] 'になります。これは、サポートされているDataFrame型ではありません。これを解決するには、単純に結果を 'Seq'に変換します:' udf {(s:String)=> words.value.filter(word => s.contains(word))。toSeq} ' –