Невозможно преобразовать 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

0 ответов

Другие вопросы по тегам