在Spark中向DF读取JSON时如何处理缺少的JSON对象类型 到案例类
case class userInfo(user_id:String,name:String,div_id:String,div_Name:Option[String])
示例json:
{"user_id":"123ABC","name":"john","div_id":"Business"}
{"user_id":"44wsxer","name":"Valenico"}
{"user_id":"33qwe","name":"Jmayar"}
{"user_id":"121ioi","name":"xyzz","div_id":"Support"}
如何将上述json读取到DF并为div_Name对象分配null
答案 0 :(得分:3)
需要两个步骤:
确保在类定义中将可能缺失的字段声明为可空的Scala类型(Option[_]
或Java装箱类型)。
在您的情况下,所有字段均为String
,因此不需要其他更改。
确保提供一个schema
参数,并且不依赖于模式推断。例如,您可以使用Encoder
:
import org.apache.spark.sql.Encoders
val schema = Encoders.product[userInfo].schema
spark.read.schema(schema).json(...)