我需要将一棵二进制树写入HDFS,我将用它来表示一个决策树.但是为了做到这一点,我首先需要创建一个BinaryTreeNode类,它将是树节点.这些是我的课程属性:
private String name;
private String attribute;
private String attType;
private String condition;
private String lines;
private BinaryTreeNode leftChild;
private BinaryTreeNode rightChild;
所以现在我需要实现write和readFields方法来读写这些节点.这些是我所做的:
public void write(DataOutput d) throws IOException
{
d.writeUTF(name);
d.writeUTF(attribute);
d.writeUTF(attType);
d.writeUTF(condition);
d.writeUTF(lines);
//SOMETHIN FOR LEFT AND RIGHT CHILD
}
public void readFields(DataInput di) throws IOException
{
name=di.readUTF();
attribute=di.readUTF();
attType=di.readUTF();
condition=di.readUTF();
lines=di.readUTF();
//SOMETHIN FOR LEFT AND RIGHT CHILD
}
BinaryTreeNode read(DataInput in) throws IOException
{
BinaryTreeNode ob = new BinaryTreeNode();
ob.readFields(in);
return ob;
}
我无法想到的是如何编写和读取我的2个子节点.请注意,将以递归方式构建树,并且每个节点将具有0-2个子节点.因此,我的后一个目的是拥有一个BinaryTree类,该类将具有BinaryTreeNode属性根.谢谢
解决方法:
I need to write a binary tree to HDFS
All i need is a way to save and load my tree.
使用HDFS的原因是什么? HDFS是一个分布式文件系统,可以在其中存储任何类型的数据/文件.您已经编写了很多代码来有效地大规模存储和检索图形.
您可以从面向图的数据库(例如OrientDB和Neo4j)中存储和检索图.
此外,还有开放源代码框架,例如Apache Giraph、Apache Hama和GoldenOrb.可能还存在绑定以与Java程序进行交互.