2016-12-08 19 views
5
Aşağıda

kullanarak kıvılcım veri dönüştürme yaparken sonra cevap buldu =>Çoklu kurucular scala

java.lang.IllegalArgumentException: Multiple constructors with the same number of parameters not allowed. 
    at com.datastax.spark.connector.util.Reflect$.methodSymbol(Reflect.scala:16) 
    at com.datastax.spark.connector.util.ReflectionUtil$.constructorParams(ReflectionUtil.scala:63) 
    at com.datastax.spark.connector.mapper.DefaultColumnMapper.<init>(DefaultColumnMapper.scala:45) 
    at com.datastax.spark.connector.mapper.LowPriorityColumnMapper$class.defaultColumnMapper(ColumnMapper.scala:47) 
    at com.datastax.spark.connector.mapper.ColumnMapper$.defaultColumnMapper(ColumnMapper.scala:51) 

cevap

4

kod

def findUniqueGroupInMetadata(sc: SparkContext): Unit = { 
    val merchantGroup = sc.cassandraTable("local_pb",  "merchant_metadata").select("group_name") 

try { 
    val filterByWithGroup = merchantGroup.filter { 
    row => 
     row.getStringOption("group_name") match { 
     case Some(s: String) if (s != null) => true 
     case None => false 
     } 
    }.map(row => row.getStringOption("group_name").get.capitalize) 


    //filterByWithGroup.take(15).foreach(data => println("merchantGroup => " + data)) 
    filterByWithGroup.saveToCassandra("local_pb", "merchant_group", SomeColumns("group_name")) 
} catch { 
    case e: Exception => println(e.printStackTrace()) 

} 

}

İstisna olan bazı bloglara bakıyorum.

RDD [String] 'i RDD'ye dönüştürdüğüm zaman [Tuple1 [String]] her şey düzgün gitti. Temel olarak, verileri Cassandra'ya kaydetmek için, verilerin RDD türünde olması gerekir [TupleX [Dize]] Burada x 1,2,3 olabilir ... veya veriler RDD olabilir [SomeCaseClass]

+0

Aynı hatayla karşılaşıldı farklı bir bağlamda mesaj (deleteFromCassandra'yı bir Spark DataFrame ile çağırmak) ve düzeltme benim için de çalıştı. –