首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能更新现有顶点

未能更新现有顶点
EN

Stack Overflow用户
提问于 2018-01-12 11:15:12
回答 1查看 207关注 0票数 0

我在更新门立体图中顶点的一些性质。可能包含多达500000个顶点更新。下划线是卡桑德拉。在进行这些更新时,我会收到以下错误:

org.apache.tinkerpop.gremlin.driver.exception.ResponseException:脚本计算超过了配置的60000000 ms的“scriptEvaluationTimeout”阈值,否则由于请求g.V().has(IProKeys_A_ID,analysisId).has(quaPro,propValue).id()直接取消计算

守则:

代码语言:javascript
复制
...
// 1. retrieve SPC property different values
        Cluster cluster = gremlinCluster.getCluster();
        Client client = null;
        List<String> propertyValues = Lists.newArrayList();
        try {
            client = cluster.connect();
            String gremlin = "g.V().has(IPr_a_ID, aId).values(qProperty).dedup()";
            Map<String, Object> parameters = Maps.newHashMap();
            parameters.put("IPr_a_ID", IPropertyKeys.ANALYSIS_ID);
            parameters.put("aId", analysisResultId);
            parameters.put("qProperty", qProperty);
            if (logger.isDebugEnabled()) logger.debug("Submiting query [ " + gremlin + " ] with binding [ " + parameters + "]");
            ResultSet resultSet = client.submit(gremlin, parameters);
            if (logger.isDebugEnabled()) logger.debug("Query finished.");
            resultSet.stream().forEach(result -> {
                String propertyValue = result.getString();
                propertyValues.add(propertyValue);
            });

        } catch
...
..
..
..
// 2. for each property value, run gremlin query to assign new grouptag property to proper vertices
        try {
            client = cluster.connect();
        for (String propValue : propertyValues) {
            String gremlin = "g.V().has(IProKeys_A_ID,analysisId).has(quaPro, propValue).property(qGtag,propValue).iterate(); return null";
            Map<String, Object> parameters = Maps.newHashMap();
            parameters.put("IProKeys_A_ID", IP_ID);
            parameters.put("analysisId", aisRId);
            parameters.put("quaPro", q_Property);
            parameters.put("qGtag", qu_dG_ptag);
            parameters.put("propValue", propValue);
            if (logger.isDebugEnabled()) logger.debug("Submiting query [ " + gremlin + " ] with binding [ " + parameters + "]");
            client.submit(gremlin, parameters).one();
            if (logger.isDebugEnabled()) logger.debug("Query finished.");
        }

你能告诉我出这个错误的原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 13:31:27

很难确切地说出你为什么会有超时问题。我要说的是,我注意到您从Client对象创建了新的Cluster实例。如果您正在创建许多这些,这可能会解释一些问题(即使您每次都在Client上调用Client)。我肯定会修改您的代码,只创建一次Client并重用它。

另外,对于500,000个顶点,您可能需要查看OLAP方法(hadoop/spark)来更新这些数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48225121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档