Я использую игровую инфраструктуру для создания объекта json, после этого я должен сохранить эти объекты в файле json.linksEvolution - это последовательность объектов JsObject.
var linksEvolution: Seq[JsObject] = Seq()
a JsObject создается путем:
val user = Json.obj(
"link" -> [87, 98],
"reference" -> [1,8],
)
обновления списка JsObject:
val tmplinksEvolution = linksEvolution :+ user
linksEvolution = tmplinksEvolution
При обновлениииз linksEvolution завершена, теперь я создаю RDD с помощью linksEvolution, поэтому каждый элемент RDD будет сохранен в файле, например:
//create the RDD
val rddLinksEvolution = spark.sparkContext.parallelize(linksEvolution)
//convert each JsObject to string
val tmprddLinksEvolution = rddLinksEvolution.map(_.toString())
//save the data on a text file
tmprddLinksEvolution.saveAsTextFile("testSavingFile_2.json")
Проблема: я получил сообщение об ошибке:
java.lang.ClassCastException: java.lang.String cannot be cast to scala.scalajs.js.Any
Это исключение возникает только тогда, когда я использую файл jar, предоставленный maven install.Но когда тот же код работает нормально, когда я запускаю его с помощью Scala IDE (запуска приложения scala)!
Редактировать: пример в главной функции и зависимости
Полный пример:
import play.api.libs.json.{ JsArray, JsNumber, JsObject, Json }
import org.apache.spark.{ SparkConf, SparkContext }
object TestJson {
def main(args: Array[String]) = {
var linksEvolution: Seq[JsObject] = Seq()
val user = Json.obj(
"link" -> JsArray(Seq(JsNumber(87), JsNumber(98))),
"reference" -> JsArray(Seq(JsNumber(1), JsNumber(8))))
val tmplinksEvolution = linksEvolution :+ user
linksEvolution = tmplinksEvolution
val sc = new SparkContext(new SparkConf().setAppName("test").setMaster("local"))
//create the RDD
val rddLinksEvolution = sc.parallelize(linksEvolution)
//convert each JsObject to string
val tmprddLinksEvolution = rddLinksEvolution.map(_.toString())
//save the data on a text file
tmprddLinksEvolution.saveAsTextFile("testSavingFile_kk2.json")
}
}
С зависимостями:
<dependencies>
<!-- https://mvnrepository.com/artifact/com.typesafe.play/play-json -->
<dependency>
<groupId>com.typesafe.play</groupId>
<artifactId>play-json_sjs0.6_2.11</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.0</version>
</dependency>