【发布时间】:2018-01-18 10:03:08
【问题描述】:
我正在尝试将 json 读入数据集(spark 2.1.1)。不幸的是,它不起作用。并失败:
Caused by: java.lang.NullPointerException: Null value appeared in non-
nullable field:
- field (class: "scala.Long", name: "age")
任何想法我做错了什么?
case class Owner(id: String, pets: Seq[Pet])
case class Pet(name: String, age: Long)
val sampleJson = """{"id":"kotek", "pets":[{"name":"miauczek",
"age":18}, {"name":"miauczek2", "age":9}]}"""
val session = SparkSession.builder().master("local").getOrCreate()
import session.implicits._
val rdd = session.sparkContext.parallelize(Seq(sampleJson))
val ds = session.read.json(rdd).as[Owner].collect()
【问题讨论】:
-
我相信这是火花中的一个错误。如果我正确理解这里发生了什么。 spark 不是按名称映射该内部类型(“宠物”)。他正在使用排序顺序来映射这些属性?所以 pets.age 被映射到 Pet.name,并且在尝试映射 pets.name -> Pet.age 时,他失败了。任何人都可以确认我的理解是正确的,这是火花错误?
标签: json scala apache-spark apache-spark-sql apache-spark-dataset