このエラーはflatMap
で表示されますが、map
では表示されません。ブール演算はflatMap
変換でサポートされていませんか?booleanはflatMapでサポートされていませんか?
scala> val array = Array("age","astro")
array: Array[String] = Array(age, astro)
scala> val baseRdd = sc.parallelize(array)
baseRdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:29
scala> val flat2 = baseRdd2.flatMap(x => x.contains("a"))
<console>:31: error: type mismatch;
found : Boolean
required: TraversableOnce[?]
val flat2 = baseRdd2.flatMap(x => x.contains("a"))
期待どおりの結果ですか? 2つのブール値を持つRDDはどちらも当てはまりますか? – stholzm
@stholzmはい。しかし、私はマップでタトゥーをすることができます。フラットマップがブール値の結果をTraversableOnceとして返していないのは間違いです。 – BDR
'map'と' flatMap'の両方がRDDを返します。違いは 'TraversableOnce'を' flatMap'に返す関数を渡さなければならない点です。それは、データ構造、したがって名前を「平坦化」します。 'flatMap'はそのように定義されています。あなたは 'x => Array(x.contains(" a "))'を 'flatMap'に渡すことができますが、' map'を使う方が簡単です。 – stholzm