Невозможно преобразовать RDD[Java-класс] в Dataframe в Spark Scala
У меня есть avro
сообщение и .avsc
файл. Я создал класс Java из .avsc
файл. Теперь я хочу преобразовать сообщение avro(json) во фрейм данных. Я прочитал сообщение. Сообщение успешно декодировано, и я получил RDD[Product], но не могу преобразовать RDD[Product] в фрейм данных. Мне нужно сохранить сообщение в формате.avro.
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("test").setMaster("local[*]")
val spark = SparkSession.builder().config(conf).getOrCreate()
import spark.implicits._
val rdd = spark.read.textFile("/Users/lucy/product_avro.json").rdd
val rdd1 = rdd.map(string => toProduct(string))
spark.createDataFrame(rdd1, classOf[Product]) // not working
}
def toProduct(input: String): Product = {
return new SpecificDatumReader[Product](Product.SCHEMA$)
.read(null, DecoderFactory.get().jsonDecoder(Product.SCHEMA$, input))
}
Ошибка: java.lang.UnsupportedOperationException: Не может иметь циклические ссылки в классе бина, но получил циклическую ссылку класса org.apache.avro.Schema