без проблем.Просто прочитайте его и позвольте Spark определить схему:
val ds = Seq(
"""{"id": 1, "label": "tube", "length": "50m", "diameter": "5cm"}""",
"""{"id": 2, "label": "brick", "width": "10cm", "length": "25cm"}""",
"""{"id": 3, "label": "sand", "weight": "25kg"}"""
).toDS
spark.read.json(ds).show
// +--------+---+-----+------+------+-----+
// |diameter| id|label|length|weight|width|
// +--------+---+-----+------+------+-----+
// | 5cm| 1| tube| 50m| null| null|
// | null| 2|brick| 25cm| null| 10cm|
// | null| 3| sand| null| 25kg| null|
// +--------+---+-----+------+------+-----+
или предоставить ожидаемую схему при чтении:
import org.apache.spark.sql.types._
val fields = Seq("label", "length", "weight", "width")
val schema = StructType(
StructField("id", LongType) +: fields.map {
StructField(_, StringType)
}
)
spark.read.schema(schema).json(ds).show
// +---+-----+------+------+-----+
// | id|label|length|weight|width|
// +---+-----+------+------+-----+
// | 1| tube| 50m| null| null|
// | 2|brick| 25cm| null| 10cm|
// | 3| sand| null| 25kg| null|
// +---+-----+------+------+-----+