我正在试验Apache Giraph,我需要为驻留在HDFS中的csv文件创建一个简单的图形,该图形显示2列之间的关系。(与商店名称相关的受害者)
我的数据大小超过1Gb csv格式。最初尝试通过Java与本地文件一起使用neo4j,但是它只能加载小数据,不能直接从HDFS导入数据。我的数据可能会增加。因此请考虑使用Apache Giraph。
但是如何实现相同?
Hope apache giraph只接受纯文本格式的输入。我的数据为csv格式。因此,有没有什么工具可以使我的csv变为图形格式,并将其作为输入提供给Giraph,以便在图形中进行计算。
最佳答案
我也有同样的疑问,尽管很多答复似乎都建议将图形重写为Giraph之外的标准格式,但这不是必需的。
您应该检查标准类的实现:
https://apache.googlesource.com/giraph/+/refs/heads/trunk/giraph-core/src/main/java/org/apache/giraph/io/formats/IntNullTextEdgeInputFormat.java
这将读取一个TSV文件(这是类名称的“Text
”部分),其中包含成对的整数顶点ID对(这是“Int
”部分),其形式为:
1 2
2 4
3 2
4 1
...
不考虑边缘元数据,仅考虑一对顶点(这是“
Null
”部分)。通过更改
SEPARATOR
,可以很容易地使此示例适用于CSV,也可以通过将IntWritable
转换为Text
来考虑字符串ID(对于其他类型也是如此)。稍后将选择输入格式作为传递给框架的属性(给出您希望用于解析输入数据的类的完全限定名称)。