7

これがバグかどうかわからないので、このようなことをすると

// d:spark.RDD[String]
d.distinct().map(x => d.filter(_.equals(x)))

JavaNPEを取得します。collectただし、直後に行う場合はdistinct、すべて問題ありません。

私はspark0.6.1を使用しています

4

2 に答える 2

13

Sparkは、ネストされたRDDまたは他のRDDを参照するユーザー定義関数をサポートしていないため、NullPointerExceptionが発生します。メーリングリストのこのスレッドをspark-users参照してください。

現在のコードがの要素をd値でグループ化しようとしているようです。groupBy() これは、 RDDメソッドを使用して効率的に行うことができます。

scala> val d = sc.parallelize(Seq("Hello", "World", "Hello"))
d: spark.RDD[java.lang.String] = spark.ParallelCollection@55c0c66a

scala> d.groupBy(x => x).collect()
res6: Array[(java.lang.String, Seq[java.lang.String])] = Array((World,ArrayBuffer(World)), (Hello,ArrayBuffer(Hello, Hello)))
于 2013-01-02T22:52:12.307 に答える
0

Spark1.3.0ストリームプログラミングガイドで提供されているウィンドウ処理の例はどうですか

val dataset: RDD[String, String] = ...
val windowedStream = stream.window(Seconds(20))...
val joinedStream = windowedStream.transform { rdd => rdd.join(dataset) }

SPARK-5063を使用すると、RDDの変換メソッド内から結合が呼び出されているため、例が失敗します。

于 2015-04-10T22:06:23.660 に答える