2016-02-29 76 views
3

我有以下(简化)节俭定义。它包含一个递归树形结构:实木复合地板:递归节俭数据结构

namespace java com.test.thrift 

struct B { 
    1: list<A> aList, 
    2: i16 label 
} 

struct A { 
    1: list<B> bList, 
    2: i16 label 
} 

转换这个定义的Java的表象导致堆栈溢出(无端环)

val sType = org.apache.parquet.thrift.ThriftSchemaConverter.toStructType(classOf[com.test.thrift.A]) 

这是通过创建

一个实例调用
org.apache.parquet.thrift.ThriftParquetWriter 

递归是以防万一:

at org.apache.parquet.thrift.ThriftSchemaConverter.toStructType(ThriftSchemaConverter.java:82) 
at org.apache.parquet.thrift.ThriftSchemaConverter.toThriftField(ThriftSchemaConverter.java:116) 
at org.apache.parquet.thrift.ThriftSchemaConverter.toThriftField(ThriftSchemaConverter.java:131) 

有没有办法在Parquet中使用递归数据结构?

感谢您的支持

回答

0

你可能有一个参考循环,这是什么导致你的堆栈溢出异常(串行如下,只要它能东西炸毁之前的参考文献)。

一种可能的解决方案,以避免运行到这可能是一个标识符字段添加到每个标签,并在aListbList代替参考使用这些。