У меня есть Java-код для преобразования JavaRDD
в Dataset
и сохранения его в HDFS:
Dataset<User> userDataset = sqlContext.createDataset(userRdd.rdd(), Encoders.bean(User.class));
userDataset.write.json("some_path");
User
класс определен на языке Scala:
case class User(val name: Name, val address: Seq[Address]) extends Serializable
case class Name(firstName: String, lastName: Option[String])
case class Address(address: String)
Код соответствует и выполняется успешно, файл сохраняется в HDFS, а класс User
в выходном файле имеет пустую схему:
val users = spark.read.json("some_path")
users.count // 100,000 which is same as "userRdd"
users.printSchema // users: org.apache.spark.sql.DataFrame = []
Почему Encoders.bean
не работает в этом случае?