Ben bu sorunu yaşamaya devam ediyorum: bir dize dizisi içinde olup olmadığını java.lang.ClassCastException: scala.collection.immutable.$colon$colon cannot be cast to [Ljava.lang.Object;
Ben kullanmayı deneyin her "içerir" bulmak için. Bunu yapmanın daha uygun bir yolu var mı? Yoksa yanlış bir şey mi yapıyorum?scala de içerdiği - istisna
val matches = Set[JSONObject]()
val config = new SparkConf()
val sc = new SparkContext("local", "SparkExample", config)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val ebay = sqlContext.read.json("/Users/thomassquires/Downloads/products.json")
val catalogue = sqlContext.read.json("/Users/thomassquires/Documents/catalogue2.json")
val eins = ebay.map(item => (item.getAs[String]("ID"), Option(item.getAs[Set[Row]]("itemSpecifics"))))
.filter(item => item._2.isDefined)
.map(item => (item._1 , item._2.get.find(x => x.getAs[String]("k") == "EAN")))
.filter(x => x._2.isDefined)
.map(x => (x._1, x._2.get.getAs[String]("v")))
.collect()
def catEins = catalogue.map(r => (r.getAs[String]("_id"), Option(r.getAs[Array[String]]("item_model_number")))).filter(r => r._2.isDefined).map(r => (r._1, r._2.get)).collect()
def matched = for(ein <- eins) yield (ein._1, catEins.filter(z => z._2.contains(ein._2)))
istisna son satırında oluşur: Burada
kodudur (I Scala için oldukça yeni). Birkaç farklı varyantı denedim.Veri yapığım bir List[Tuple2[String, String]]
ve bir List[Tuple2[String, Array[String]]]
. Dizeyi içeren ikinci listeden sıfır veya daha fazla eşleşme bulmam gerekiyor.
Teşekkür
filtreleyeceğinizi sonra toplama ve herhangi özel bir sebebi var mı görüyor musunuz? Çünkü ideal olarak her zaman sonucunuzu toplamanız gerekir. –
Özellikle hatayı düzeltmek için. Tembelliğinden bu yana sadece topladığı hatayı alıyorum. İlk iki sette hataları göz ardı etmek istedim –
Tüm valların açıklayıcı tiplerini deneyin, aynı zamanda başkalarının kodunuz hakkında akıl yürütmesine yardımcı olur. Btw neden 'eşleştirildi' ve 'catEins'' val's yerine def's? –