【问题标题】:How do I read avro file as a list of objects in Java Spark如何在 Java Spark 中读取 avro 文件作为对象列表
【发布时间】:2020-01-22 13:01:09
【问题描述】:

我有一个 avro 文件,我想在将其转换为代表对象后对其进行读取和操作

我尝试在 Java Spark 中使用 RDD 和 DataSet 加载它,但在这两种情况下我都无法转换为所需的对象

作为数据集

Dataset<MyClass> input = sparkSession.read().format("com.databricks.spark.avro").load(inputPath)
                .as(Encoders.bean(MyClass.class)); 

这失败,错误“在 bean 类中不能有循环引用,但得到了类 org.apache.avro.Schema 的循环引用”

作为RDD

JavaRDD<String> input = sparkContext.textFile(inputPath);

如何将此 RDD 对象转换为 RDD 对象或 Dataset 对象?

我对此很陌生,所以如果我遗漏了一些基本的东西但无法找到有效的解决方案,请原谅我。

【问题讨论】:

  • 您使用的是什么版本的 Spark? Spark 2.4.x 不需要 databricks 库。可以去掉编码器吗?
  • 我在 2.3.0。没有编码器就无法编译
  • 它不能用Dataset&lt;MyClass&gt;编译,但你仍然可以创建一个数据框

标签: java apache-spark avro spark-avro


【解决方案1】:

这是通过使用来自https://github.com/CeON/spark-utils 的 SparkAvroLoader 解决的

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多