java - 如何在 Java Spark 中将 avro 文件读取为对象列表

标签 java apache-spark avro spark-avro

我有一个 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 对象?

我对此很陌生,所以如果我缺少一些基本的东西但无法找到可行的解决方案,请原谅我。

最佳答案

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

关于java - 如何在 Java Spark 中将 avro 文件读取为对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59860373/

相关文章:

java - 正则表达式在java中查找连字符的文本

python - PySpark(Python 2.7): How to flatten values after reduce

apache-spark - Spark 是否在内部跨节点分发数据帧?

java - Android Studio 使用模块

Java Mongodb 连接失败

scala - 如何更改 StructType 的 StructField 中列的数据类型?

java - 文件在 Spark 作业中保持 .avro.tmp 状态?

java - 从具有超过 254 个字段的模式 avro 生成平面案例类

java - 在 Java 中使用 Avro 的 MapReduce : String vs CharSequence vs Utf8 data types

java - 磁盘上的 .class 文件是否必须遵循与其在 Java 中的限定名称相同的目录结构才能运行它?