我想将包含 Avro 对象(例如 MyAvroClsass 的对象)的 javaRDD 转换为 java Spark 中的数据帧。我遇到错误以下
Cannot have circular references in bean class, but got the circular reference of class class org.apache.avro.Schema
Code:
JavaRDD<Row> test;
Dataset<Row> outputDF = sparksession.createDataFrame(test.rdd(),<MyAvroClsass>.class);
这与:avro 类型的 createDataFrame 中的无限递归 https://stackoverflow.com/questions/36532237/infinite-recursion-in-createdataframe-for-avro-types/46479487#46479487
Spark-avro 项目正在开展工作来解决此问题,请参阅:https://github.com/databricks/spark-avro/pull/217 https://github.com/databricks/spark-avro/pull/217 and
https://github.com/databricks/spark-avro/pull/216 https://github.com/databricks/spark-avro/pull/216
一旦合并,应该有一个函数将 Avro 对象的 RDD 转换为 DataSet(行的 DataSet 相当于 DataFrame),而不会出现生成类中 getSchema() 函数的循环引用问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)