Titan/JanusGraph的Hadoop-Gremlin批量数据导入注意事项

Titan/JanusGraph图数据库支持Hadoop-Gremlin批量数据导入,其执行需要注意如下问题

1)Titan/Janusgraph支持的数据格式为邻接链表

      其实就是邻接矩阵,每条边(i, j)在邻接列表中出现两次,一次为入边,一次为出边,分别位于矩阵的上三角和下下三角。如果进一步深入,那就需要学习线性代数啦。


2)如果导入数据为从其他Titan图数据库导出的数据, 在导入数据前,需要

     针对每种类型(VertexLabel)节点,创建索引,属性名称为bulkLoader.vertex.id。

     在实际导入前,系统会以VertexLablel和bulkLoader.vertex.id联合查询导入的顶点在数据库中是否存在,如果不建立索引,会导致查询时间过长。索引建立例子如下

blid = m.makePropertyKey("bulkLoader.vertex.id").dataType(Long.class).make()

vetexLabel = m.makeEdgeLabel("vertexLabel").make()

m.buildIndex("byBulkLoaderVertexId", Vertex.class).addKey(blid).indexOnly(vetexLabel).buildCompositeIndex()


3)如果导入到Titan/JanusGraph图数据库,需要在titan-hbase-es.properties等配置文件中配置gremlin.graph的类型,否则Hadoop-Gremlin会抛出图数据库类型不确定Exception。

gremlin.graph=com.thinkaurelius.titan.core.TitanFactory


4)  如果是大规模图的导入,则需要调整HBase,Akka等参数,以应对RPC Timeout、MapOutPutTracker等数据库海量数据操作异常。

    设置RPC Timeout参数,我一般把Timeout调到20min,应对大规模并发情况下的RPC延迟延长。

    设置spark.akka.timeout,spark.akka.heartbeat.pauses, ...,spark.akka.frameSize等spark.akka参数,应对Akka操作导致的Timeout问题以下为我针对10亿级顶点的数据导入采用的spark.akka配置参数。

spark.akka.timeout=1000

spark.akka.heartbeat.pauses=60000

spark.akka.failure-detector.threshold=3000.0

spark.akka.heartbeat.interval=10000

spark.akka.askTimeout=600

spark.akka.frameSize=100

spark.akka.lookupTimeout=600

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值