Amaç, Scalaz for Spark'ın RDD'si (dağıtılmış koleksiyon) tarafından sağlanan farklı tip sınıflarını (Semigroup, Monad, Functor, vb.) Uygulamaktır. Ne yazık ki, RDD'lerle iyi çalışmak için daha yüksek cinsli tipler (Monad, Functor, vb.) Alan tip sınıflarından hiçbirini yapamam. RDDs içinScalaz Tip Apache Spark için Sınıflar RDD'ler
abstract class RDD[T: ClassTag](){
def map[U: ClassTag](f: T => U): RDD[U] = {...}
}
Komple kod here bulunabilir:
RDDs olarak tanımlanan (basitleştirilmiş) vardır. hatadır
error: No ClassTag available for B fa.map(f)
:
implicit def functorRDD = new Functor[RDD] {
override def map[A, B](fa: RDD[A])(f: A => B): RDD[B] = {
fa.map(f)
}
}
Bu başarısız:
İşteimport scalaz._, Scalaz._
import org.apache.spark.rdd.RDD
implicit def semigroupRDD[A] = new Semigroup[RDD[A]] {
def append(x:RDD[A], y: => RDD[A]) = x.union(y)
}
çalışmadığını bir örnektir: Burada
çalışıyor bir örnektir oldukça açık. RDD'de uygulanan harita bir ClassTag bekler (yukarıya bakın). ScalaZ functor/monads vb., ClassTag yok. Scalaz ve/veya Spark'i değiştirmeden bu işi yapmak mümkün mü?
Bu benim de sonuçtu. – marios