Метод savepairs IgniteRdd для чтения файлов паркета

Я сделал небольшой импл для чтения файлов паркета и сохранения элементов в кеше. Поэтому я написал:

val df= sqlContext.read.
        parquet(hdfsFolder).
        select("a","b", "c", "d", "e", "f")
val columnsSeq= Seq("a","b", "c", "d", "e", "f")

val values = df.map(row => (row.getAs[String]("a"), row.getValuesMap(columnsSeq))).
  groupByKey(1024).
  map(row => (row._1 , row._2.toList.asJava ))

//put them into cache

val igniteContext = new IgniteContext(sc, cacheConfigPath)

val sharedRdd = igniteContext.fromCache(cacheName)

sharedRdd.savePairs(values)

Но последняя строка «sharedRdd.savePairs(values)» дает ошибку компиляции:

найдено: org.apache.spark.rdd.RDD[(String, java.util.List[Map[String,Nothing]])] требуется: org.apache.spark.rdd.RDD[(Nothing, Nothing)] Примечание. (String, java.util.List[Map[String,Nothing]]) >: (Nothing, Nothing), но класс RDD инвариантен для типа T. Вместо этого вы можете определить T как -T. (SLS 4.5) sharedRdd.savePairs(значения)

Я не мог найти никаких способов преодолеть эту ошибку.

Любые идеи?


person Neron    schedule 22.08.2016    source источник


Ответы (1)


Вы должны создать IgniteRDD с правильным вводом:

val sharedRdd = igniteContext.fromCache[String, java.util.List[Map[String,Nothing]]](cacheName)
person Valentin Kulichenko    schedule 22.08.2016