コード例 #1
0
def test_load_modern_graph(modern_graph_data_dir):
    image, ci = get_gs_image_on_ci_env()
    if ci:
        sess = graphscope.session(
            show_log=True,
            num_workers=1,
            k8s_gs_image=image,
        )
    else:
        sess = graphscope.session(
            show_log=True,
            num_workers=1,
        )
    graph = load_modern_graph(sess, modern_graph_data_dir)
    interactive = sess.gremlin(graph)
    queries = [
        "g.V().has('name','marko').count()",
        "g.V().has('person','name','marko').count()",
        "g.V().has('person','name','marko').outE('created').count()",
        "g.V().has('person','name','marko').outE('created').inV().count()",
        "g.V().has('person','name','marko').out('created').count()",
        "g.V().has('person','name','marko').out('created').values('name').count()",
    ]
    for q in queries:
        result = interactive.execute(q).all().result()[0]
        assert result == 1
コード例 #2
0
def test_demo_distribute(data_dir, modern_graph_data_dir):
    image, ci = get_gs_image_on_ci_env()
    if ci:
        sess = graphscope.session(
            show_log=True,
            num_workers=2,
            k8s_gs_image=image,
        )
    else:
        sess = graphscope.session(
            show_log=True,
            num_workers=2,
        )

    graph = load_ldbc(sess, data_dir)

    # Interactive engine
    interactive = sess.gremlin(graph)
    sub_graph = interactive.subgraph(  # noqa: F841
        'g.V().hasLabel("person").outE("knows")')
    person_count = (interactive.execute(
        'g.V().hasLabel("person").outE("knows").bothV().dedup().count()').all(
        ).result()[0])
    knows_count = (interactive.execute(
        'g.V().hasLabel("person").outE("knows").count()').all().result()[0])
    interactive2 = sess.gremlin(sub_graph)
    sub_person_count = interactive2.execute("g.V().count()").all().result()[0]
    sub_knows_count = interactive2.execute("g.E().count()").all().result()[0]
    assert person_count == sub_person_count
    assert knows_count == sub_knows_count

    # Analytical engine
    # project the projected graph to simple graph.
    simple_g = sub_graph.project_to_simple(v_label="person", e_label="knows")

    pr_result = graphscope.pagerank(simple_g, delta=0.8)
    tc_result = graphscope.triangles(simple_g)

    # add the PageRank and triangle-counting results as new columns to the property graph
    # FIXME: Add column to sub_graph
    sub_graph.add_column(pr_result, {"Ranking": "r"})
    sub_graph.add_column(tc_result, {"TC": "r"})

    # test subgraph on modern graph
    mgraph = load_modern_graph(sess, modern_graph_data_dir)

    # Interactive engine
    minteractive = sess.gremlin(mgraph)
    msub_graph = minteractive.subgraph(  # noqa: F841
        'g.V().hasLabel("person").outE("knows")')
    person_count = (minteractive.execute(
        'g.V().hasLabel("person").outE("knows").bothV().dedup().count()').all(
        ).result()[0])
    msub_interactive = sess.gremlin(msub_graph)
    sub_person_count = msub_interactive.execute(
        "g.V().count()").all().result()[0]
    assert person_count == sub_person_count

    # GNN engine
    sess.close()
コード例 #3
0
def test_query_modern_graph(modern_graph_data_dir):
    gs_image, gie_manager_image = get_gs_image_on_ci_env()
    sess = graphscope.session(
        num_workers=1,
        k8s_gs_image=gs_image,
        k8s_gie_graph_manager_image=gie_manager_image,
        k8s_coordinator_cpu=0.5,
        k8s_coordinator_mem="2500Mi",
        k8s_vineyard_cpu=0.1,
        k8s_vineyard_mem="512Mi",
        k8s_engine_cpu=0.1,
        k8s_engine_mem="1500Mi",
        k8s_vineyard_shared_mem="2Gi",
        k8s_volumes=get_k8s_volumes(),
    )
    graph = load_modern_graph(sess, modern_graph_data_dir)
    interactive = sess.gremlin(graph)
    queries = [
        "g.V().has('name','marko').count()",
        "g.V().has('person','name','marko').count()",
        "g.V().has('person','name','marko').outE('created').count()",
        "g.V().has('person','name','marko').outE('created').inV().count()",
        "g.V().has('person','name','marko').out('created').count()",
        "g.V().has('person','name','marko').out('created').values('name').count()",
    ]
    for q in queries:
        result = interactive.execute(q).all().result()[0]
        assert result == 1
コード例 #4
0
def test_traversal_modern_graph(modern_graph_data_dir):
    from gremlin_python.process.traversal import Order
    from gremlin_python.process.traversal import P

    gs_image, gie_manager_image = get_gs_image_on_ci_env()
    sess = graphscope.session(
        show_log=True,
        num_workers=1,
        k8s_gs_image=gs_image,
        k8s_gie_graph_manager_image=gie_manager_image,
        k8s_coordinator_cpu=0.5,
        k8s_coordinator_mem="2500Mi",
        k8s_vineyard_cpu=0.1,
        k8s_vineyard_mem="512Mi",
        k8s_engine_cpu=0.1,
        k8s_engine_mem="1500Mi",
        k8s_vineyard_shared_mem="2Gi",
        k8s_volumes=get_k8s_volumes(),
    )
    graph = load_modern_graph(sess, modern_graph_data_dir)
    interactive = sess.gremlin(graph)
    g = interactive.traversal_source()
    assert g.V().has("name", "marko").count().toList()[0] == 1
    assert g.V().has("person", "name", "marko").count().toList()[0] == 1
    assert g.V().has("person", "name",
                     "marko").outE("created").count().toList()[0] == 1
    assert (g.V().has("person", "name",
                      "marko").outE("created").inV().count().toList()[0] == 1)
    assert g.V().has("person", "name",
                     "marko").out("created").count().toList()[0] == 1
    assert (g.V().has(
        "person", "name",
        "marko").out("created").values("name").count().toList()[0] == 1)
    assert (g.V().hasLabel("person").has("age", P.gt(30)).order().by(
        "age", Order.desc).count().toList()[0] == 2)
コード例 #5
0
def test_add_vertices_edges(gs_session_distributed, modern_graph_data_dir):
    graph = load_modern_graph(gs_session_distributed, modern_graph_data_dir)
    graph = graph.add_vertices(
        Loader(os.path.join(modern_graph_data_dir, "person.csv"),
               delimiter="|"),
        "person2",
        ["name", ("age", "int")],
        "id",
    )
    assert "person2" in graph.schema.vertex_labels

    graph = graph.add_edges(
        Loader(
            os.path.join(modern_graph_data_dir, "knows.csv"),
            delimiter="|",
        ),
        "knows2",
        ["weight"],
        src_label="person2",
        dst_label="person2",
    )

    assert "knows2" in graph.schema.edge_labels

    interactive = gs_session_distributed.gremlin(graph)
    g = interactive.traversal_source()
    assert g.V().count().toList()[0] == 10
    assert g.E().count().toList()[0] == 8
コード例 #6
0
def test_query_modern_graph(gs_session, modern_graph_data_dir):
    graph = load_modern_graph(gs_session, modern_graph_data_dir)
    interactive = gs_session.gremlin(graph)
    queries = [
        "g.V().has('name','marko').count()",
        "g.V().has('person','name','marko').count()",
        "g.V().has('person','name','marko').outE('created').count()",
        "g.V().has('person','name','marko').outE('created').inV().count()",
        "g.V().has('person','name','marko').out('created').count()",
        "g.V().has('person','name','marko').out('created').values('name').count()",
    ]
    for q in queries:
        result = interactive.execute(q).all().result()[0]
        assert result == 1
コード例 #7
0
def test_demo_distribute(gs_session_distributed, data_dir,
                         modern_graph_data_dir):
    graph = load_ldbc(gs_session_distributed, data_dir)

    # Interactive engine
    interactive = gs_session_distributed.gremlin(graph)
    sub_graph = interactive.subgraph(  # noqa: F841
        'g.V().hasLabel("person").outE("knows")')
    person_count = (interactive.execute(
        'g.V().hasLabel("person").outE("knows").bothV().dedup().count()').all(
        ).result()[0])
    knows_count = (interactive.execute(
        'g.V().hasLabel("person").outE("knows").count()').all().result()[0])
    interactive2 = gs_session_distributed.gremlin(sub_graph)
    sub_person_count = interactive2.execute("g.V().count()").all().result()[0]
    sub_knows_count = interactive2.execute("g.E().count()").all().result()[0]
    assert person_count == sub_person_count
    assert knows_count == sub_knows_count

    # Analytical engine
    # project the projected graph to simple graph.
    simple_g = sub_graph.project_to_simple(v_label="person", e_label="knows")

    pr_result = graphscope.pagerank(simple_g, delta=0.8)
    tc_result = graphscope.triangles(simple_g)

    # add the PageRank and triangle-counting results as new columns to the property graph
    # FIXME: Add column to sub_graph
    sub_graph.add_column(pr_result, {"Ranking": "r"})
    sub_graph.add_column(tc_result, {"TC": "r"})

    # test subgraph on modern graph
    mgraph = load_modern_graph(gs_session_distributed, modern_graph_data_dir)

    # Interactive engine
    minteractive = gs_session_distributed.gremlin(mgraph)
    msub_graph = minteractive.subgraph(  # noqa: F841
        'g.V().hasLabel("person").outE("knows")')
    person_count = (minteractive.execute(
        'g.V().hasLabel("person").outE("knows").bothV().dedup().count()').all(
        ).result()[0])
    msub_interactive = gs_session_distributed.gremlin(msub_graph)
    sub_person_count = msub_interactive.execute(
        "g.V().count()").all().result()[0]
    assert person_count == sub_person_count
コード例 #8
0
def test_traversal_modern_graph(gs_session, modern_graph_data_dir):
    from gremlin_python.process.traversal import Order
    from gremlin_python.process.traversal import P

    gs_image, gie_manager_image = get_gs_image_on_ci_env()
    graph = load_modern_graph(gs_session, modern_graph_data_dir)
    interactive = gs_session.gremlin(graph)
    g = interactive.traversal_source()
    assert g.V().has("name", "marko").count().toList()[0] == 1
    assert g.V().has("person", "name", "marko").count().toList()[0] == 1
    assert g.V().has("person", "name",
                     "marko").outE("created").count().toList()[0] == 1
    assert (g.V().has("person", "name",
                      "marko").outE("created").inV().count().toList()[0] == 1)
    assert g.V().has("person", "name",
                     "marko").out("created").count().toList()[0] == 1
    assert (g.V().has(
        "person", "name",
        "marko").out("created").values("name").count().toList()[0] == 1)
    assert (g.V().hasLabel("person").has("age", P.gt(30)).order().by(
        "age", Order.desc).count().toList()[0] == 2)
コード例 #9
0
def arrow_modern_graph(graphscope_session):
    graph = load_modern_graph(graphscope_session,
                              prefix="{}/modern_graph".format(test_repo_dir))
    yield graph
    graph.unload()
コード例 #10
0
def test_demo_distribute(data_dir, modern_graph_data_dir):
    gs_image, gie_manager_image = get_gs_image_on_ci_env()
    sess = graphscope.session(
        num_workers=1,
        k8s_gs_image=gs_image,
        k8s_gie_graph_manager_image=gie_manager_image,
        k8s_coordinator_cpu=0.5,
        k8s_coordinator_mem="2500Mi",
        k8s_vineyard_cpu=0.1,
        k8s_vineyard_mem="512Mi",
        k8s_engine_cpu=0.1,
        k8s_engine_mem="1500Mi",
        k8s_etcd_cpu=2,
        k8s_vineyard_shared_mem="2Gi",
        k8s_volumes=get_k8s_volumes(),
    )
    graph = load_ldbc(sess, data_dir)

    # Interactive engine
    interactive = sess.gremlin(graph)
    sub_graph = interactive.subgraph(  # noqa: F841
        'g.V().hasLabel("person").outE("knows")'
    )
    person_count = (
        interactive.execute(
            'g.V().hasLabel("person").outE("knows").bothV().dedup().count()'
        )
        .all()
        .result()[0]
    )
    knows_count = (
        interactive.execute('g.V().hasLabel("person").outE("knows").count()')
        .all()
        .result()[0]
    )
    interactive2 = sess.gremlin(sub_graph)
    sub_person_count = interactive2.execute("g.V().count()").all().result()[0]
    sub_knows_count = interactive2.execute("g.E().count()").all().result()[0]
    assert person_count == sub_person_count
    assert knows_count == sub_knows_count

    # Analytical engine
    # project the projected graph to simple graph.
    simple_g = sub_graph.project_to_simple(v_label="person", e_label="knows")

    pr_result = graphscope.pagerank(simple_g, delta=0.8)
    tc_result = graphscope.triangles(simple_g)

    # add the PageRank and triangle-counting results as new columns to the property graph
    # FIXME: Add column to sub_graph
    sub_graph.add_column(pr_result, {"Ranking": "r"})
    sub_graph.add_column(tc_result, {"TC": "r"})

    # test subgraph on modern graph
    mgraph = load_modern_graph(sess, modern_graph_data_dir)

    # Interactive engine
    minteractive = sess.gremlin(mgraph)
    msub_graph = minteractive.subgraph(  # noqa: F841
        'g.V().hasLabel("person").outE("knows")'
    )
    person_count = (
        minteractive.execute(
            'g.V().hasLabel("person").outE("knows").bothV().dedup().count()'
        )
        .all()
        .result()[0]
    )
    msub_interactive = sess.gremlin(msub_graph)
    sub_person_count = msub_interactive.execute("g.V().count()").all().result()[0]
    assert person_count == sub_person_count

    # GNN engine
    sess.close()