我有一些JSON数据,我想在Spark Dataframe中以解析的形式存储(意思是Map [String,Any])。
有没有办法做到这一点?我认为它涉及一个编码器,但我不知道从哪里开始。
答案 0 :(得分:0)
不是有用的方式。您可以将强类型Dataset
与Kryo编码器
import org.apache.spark.sql.{Encoder, Encoders}
implicit val mapStrAnyEnc: Encoder[Map[String, Any]] = Encoders.kryo
Seq(Map("foo" -> 1.0, "bar" -> "foo")).toDS.show
// +--------------------+
// | value|
// +--------------------+
// |[35 01 02 40 01 0...|
// +--------------------+
但是如果你想使用DataFrames
,那么像这样的表示的值几乎为零。
异构对象的自然映射为struct
,但如果字段数量很大或无限制,则最佳选择是使用Map[String, String]
并仅在需要时解析值。