Я получаю предупреждение при использовании RDD в составе, и я не уверен, что это то, что я делаю неправильно. Если я делаю это:Предупреждение при использовании RDD для понимания
val sc = new SparkContext(...)
val anRDD = sc.parallelize(List(
("a", List(1, 2, 3)),
("b", List(4),
("c", List(5, 6))
)
for {
(someString, listOfInts) <- anRDD
someInt <- listOfInts
} yield (someString, someInt)
Тогда я получаю этот выход:
warning: `withFilter' method does not yet exist on org.apache.spark.rdd.RDD[(String, List[Int])], using `filter' method instead
(s, li) <- rl
Но это все еще успешно возвращает FlatMappedRDD [(String, Int)]. Я делаю что-то неправильно? Или можно ли игнорировать это предупреждение?
Update: Я также хотел бы принять в качестве ответа как для постижение преобразует эти операции для отображения/flatMap/фильтр вызовов, так как я не думаю, что не было бы никаких фильтров или withFilter вызовов требуется. Я предположил, что это было бы эквивалентно что-то похожее на это:
anRDD.flatMap(tuple => tuple.map(someInt => (tuple._1, someInt)))
Но это не относится к какой-либо фильтр или withFilter вызовы, которые, кажется, быть источником предупреждения.
О, я использую Spark 1.2.0, Scala 2.10.4, и все это находится в REPL.
Не обязательно. Где происходит вызов withFilter? Я предполагаю (как я всегда делаю с Scala), что это происходит из-за неявного преобразования где-то, но я не понимаю, почему это имеет значение здесь, поскольку для понимания понимает, что он вызывает .filter, а не .withFilter – jayhutfles
Поскольку предпочтение следует использовать withFilter для предупреждения. В этом случае он просто возвращается к методу фильтрации. –
@jayhutfles Я просто добавил больше, показывая предпочтение withFilter –