日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于GraphCompute快速搭建好友推薦圖應用

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

為了方便用戶能夠熟悉圖計算服務GraphCompute,我們提供一份完整的Demo數據、查詢Query和文檔指南,幫助用戶快速搭建一個圖計算應用,并提供百萬級別數據量的多度好友關系查詢&分析能力。

圖計算是什么?

圖計算服務(GraphCompute)基于阿里巴巴自主研發的圖引擎,提供一站式圖計算解決方案,專注OLAP能力的擴展和支持,通過自研的高性能算子,讓用戶快速接入數據和完成圖技術探索。結合阿里巴巴在電商、安全和社交等多個行業領域的積累,為全球企業及開發者提供圖技術服務。

【好友推薦】為什么要用圖計算

社交類場景的數據模型屬于典型的圖結構,圖計算可以為社交類業務提供天然的圖模型支持,更加完美表達各種關系的數據。使用圖計算,可以顯著提升社交類業務程序的開發效率和質量,減少數據關系的轉換和計算的額外損耗。

以社交關系為例,不僅是好友查詢,在“初始用戶推薦、好友推薦、聊天查詢、關聯主題”等多種場景中都能運用圖來建模。圖技術在好友查詢中僅需要幾毫秒的時間,它將好友定義成節點,將好友與好友之間的關系定義成邊,圖計算產品能夠以“點、邊”的查詢方式,更加高效的表達并分析這復雜圖結構下的數據關系和結果。

【好友推薦】業務邏輯怎么構建

某款社交APP,是一款年輕人交友軟件,通過虛擬頭像,匿名社交,即時匹配、連麥派對、聲控接唱、興趣測試等功能,從相遇開始,拒絕尬聊。該業務提供了“心靈匹配”功能,主要技術訴求是基于圖計算能夠提供三度好友推薦給“心靈匹配”。

根據業務的特點進行抽象定義,最終的業務邏輯可以理解為:

  • 查詢的業務場景:A- B - C -D 三跳好友關系

  • 需要獲取到三跳后,對所有好友進行路徑權重加分,最終得到一個推薦好友的排序列表

image

【好友推薦】圖模型創建

根據圖查詢的業務場景:A- B - C -D 三跳好友關系,通過模型的抽取和總結,最終我們確定的圖模型結構是如下結構:User代表用戶節點,節點信息中包括用戶屬性(生日、性別)、relation代表用戶之間的關系,代表他們的關系(關系權重-PS:關系權重基于離線計算或者分析可得)

image

Relation 關系表達,就是典型的U2U思路,找到與其興趣相似的活躍用戶,將后者的行為作為前者行為序列的補充,可以對于低活躍用戶相似偏好的推薦。

U2U擴展的方法也有好幾類:

方法

優點

缺點

1.user-based的協同過濾

推薦的發現性好。

難以引入side information,比如關注的人員、興趣點、學校或用戶的基礎信息,年齡、購買力等;且數據稀疏對該類算法的影響較大。

2. 基于user embedding,進行相似用戶的Top k檢索

在挖掘user embedding的過程中可以引入較多side information。

相似用戶的Top k檢索魯棒性較差,計算資源消耗大。

3. 引入用戶向量聚簇,變成相似用戶簇的Top k檢索

相似簇推薦相較于相似用戶的推薦,穩定性較高,計算開銷減少。

基于用戶單向量聚簇,容易忽略用戶行為橫跨多類目的特性,得到的商品列表較為單一。

如何創建圖應用

根據圖查詢的業務場景:A- B - C -D 三跳好友關系,通過模型的抽取和總結,最終我們確定的圖模型結構是如下結構:User代表用戶節點,節點信息中包括用戶屬性(生日、性別)、relation代表用戶之間的關系,代表他們的關系(關系權重-PS:關系權重基于離線計算或者分析可得)

1、創建集群

單擊【圖計算服務-購買創建】

image

2、定義圖模型、配置節點、關系表

定義圖模型

配置節點

配置關系表

image

示例使用:

MaxCompute源表:【igraph_mock.vertex_user_demo】

節點表中包括123074個用戶

示例使用:

MaxCompute源表:【igraph_mock.edge_relation_demo】

關系表中包括399879條關系邊

1)定義圖模型

1、創建【新增 - 圖】定義圖名和描述;

圖名:【user_relation_graph】 ,后續Gremlin查詢語句中需要指定訪問的圖配置名稱。

2、【圖編輯】頁面【新增點】創建User節點表

image.png

3、【圖編輯】頁面【User節點表】直接創建relation關系

image.png

image

2)配置節點屬性

image

3)配置關系屬性

image

警告

注意:如果后續需要基于關系數據執行圖算法相關任務,請關閉【索引優化】的配置。

image.png

4)發布圖配置

image.png

3、發布索引

1)批量回流

圖計算服務底層服務是通過分布式圖計算引擎來提供服務,在每次圖配置更新正式發布后,都需要進行一次數據回流操作。我們提供了一鍵化的【批量回流】功能,進行線上數據結構的快速變更。

image.png

2)特定表回流

image.png

4、圖查詢

通過前面的步驟,圖計算應用及數據已經準備完成,下面就可以進行圖數據的查詢和分析;

可以通過【圖探索】-進行探索式交互或者控制臺Gremlin語句查詢;

image

image

【好友推薦】測試Case

1、根據Userid查詢用戶詳情:

g("user_relation_graph").V("7949635553727122101").hasLabel("users")

查詢結果:

{
  "result": [
    {
      "data": [
        {
          "value": [
            {
              "label": "user",
              "gender": "1",
              "id": "7949635553727122101",
              "starsign": "Aries"
            }
          ],
          "labels": [
            []
          ]
        }
      ],
      "error_info": [],
      "trace_info": {}
    }
  ],
  "error_info": []
}

2、批量查詢一批Userid的用戶詳情

g("user_relation_graph").V("2443269531561029504;4315033251719520021;6045530619721418713;-2441936916298108531;-6187501937134616998;-7902352812594818920;8829494226614398819;-788398966410862160").hasLabel("user")

查詢結果:

{
  "data": [
    {
      "label": "user",
      "gender": "1",
      "id": "-2441936916298108531",
      "starsign": "Cancer"
    },
    {
      "label": "user",
      "gender": "1",
      "id": "-6187501937134616998",
      "starsign": "Gemini"
    },
    {
      "label": "user",
      "gender": "0",
      "id": "-788398966410862160",
      "starsign": "Capricorn"
    },
    {
      "label": "user",
      "gender": "0",
      "id": "-7902352812594818920",
      "starsign": "Aquarius"
    },
    {
      "label": "user",
      "gender": "0",
      "id": "2443269531561029504",
      "starsign": "Pisces"
    },
    {
      "label": "user",
      "gender": "1",
      "id": "4315033251719520021",
      "starsign": "Pisces"
    },
    {
      "label": "user",
      "gender": "1",
      "id": "6045530619721418713",
      "starsign": "Pisces"
    },
    {
      "label": "user",
      "gender": "1",
      "id": "8829494226614398819",
      "starsign": "Aquarius"
    }
  ],
  "error_info": [],
  "trace_info": {}
}

3、查詢用戶的一度關系并且排序計算

g("user_relation_graph").E("7949635553727122101").hasLabel("relation").order().by("score",decr).limit(10).values("to_id")

查詢結果:

{
  "result": [
    {
      "data": [
        "2557390182698651469",
        "-5910095803510830870",
        "-8777626058260080543",
        "-3326503472333052856",
        "-5628868613588358018",
        "5693972407819734988",
        "3169032466213709540",
        "-6273932137952248996",
        "85024782667881542",
        "2490097926641478897"
      ],
      "error_info": [],
      "trace_info": {}
    }
  ],
  "error_info": []
}

4、查詢用戶的三度好友中星座為白羊座的好友

g("user_relation_graph").E("-2441936916298108531").hasLabel("relation").outE().outE().inV().filter("starsign=\"Aries\"")

查詢結果:

image

5、查詢用戶7949635553727122101好友的星座人數分布

g("user_relation_graph").E("7949635553727122101").hasLabel("relation").inV().groupCount().by("starsign")

查詢結果:

{
  "result": [
    {
      "data": [
        {
          "\"Aquarius\"": "7",
          "\"Aries\"": "10",
          "\"Cancer\"": "1",
          "\"Capricorn\"": "3",
          "\"Gemini\"": "3",
          "\"Leo\"": "2",
          "\"Libra\"": "2",
          "\"Pisces\"": "9",
          "\"Sagittarius\"": "7",
          "\"Taurus\"": "4",
          "\"Virgo\"": "2"
        }
      ],
      "error_info": [],
      "trace_info": {}
    }
  ],
  "error_info": []
}

6、查詢用戶7949635553727122101好友的星座分數分布

g("user_relation_graph").withSack(supplier(normal,"0.0"),Splitter.identity,Operator.sum).E("7949635553727122101").hasLabel("relation").sack(Operator.sum).by("score").inV().group().by("starsign").by(sack().sum())

查詢結果:

{
  "result": [
    {
      "data": [
        {
          "\"Aquarius\"": "99.44964174192042",
          "\"Aries\"": "171.6614835163086",
          "\"Cancer\"": "15.8359302136816",
          "\"Capricorn\"": "42.44029297266677",
          "\"Gemini\"": "34.2056092615523",
          "\"Leo\"": "16.46936742222886",
          "\"Libra\"": "24.07061392479605",
          "\"Pisces\"": "129.85462775218915",
          "\"Sagittarius\"": "86.14746036242798",
          "\"Scorpio\"": "6.33437208547264",
          "\"Taurus\"": "41.80685576411946",
          "\"Virgo\"": "33.572172053005"
        }
      ],
      "error_info": [],
      "trace_info": {}
    }
  ],
  "error_info": []
}

7、查詢用戶-2441936916298108531三度好友中星座為白羊座的好友,計算路徑權重總分,按得分降序排列,并取前10名

g("user_relation_graph").withSack(supplier(normal,"0.0"),Splitter.identity,Operator.sum).E("-2441936916298108531").hasLabel("relation").sack(Operator.sum).by("score").outE().sack(Operator.sum).by("score").outE().sack(Operator.sum).by("score").inV().filter("starsign=\"Aries\"").values("id").barrier().dedup().order().by(sack(),decr).limit(10)

查詢結果:

{
  "result": [
    {
      "data": [
        "-4985651325249407669",
        "-966745601209007179",
        "300594519935616602",
        "8616477414455953382",
        "3410211067444088094",
        "7361520262922301828",
        "4419627442674893942",
        "1684980613157243612",
        "-3968869064747091877",
        "7376060565223003509"
      ],
      "error_info": [],
      "trace_info": {}
    }
  ],
  "error_info": []
}

高階能力 - 高性能全圖統計能力

業務功能:需要對用戶進行全局的統計和計算,圖計算服務在圖查詢能力的基礎之上,集成了倒排查詢。

1、用戶表從【KV索引】調整為【INDEX】倒排索引,提交表配置保存;

image.png

2、執行圖配置的【保存】和【發布】功能;

3、圖運維 - 索引構建

image.png

測試case:

1、查詢所有白羊座的用戶

g("user_relation_graph").V().hasLabel("user").indexQuery("{\"match\":{\"starsign\":\"Aries\"},\"config\":{\"seek_count_limit_per_shard\":100000,\"search_count_limit_per_shard\":100000}}")

查詢結果:

image

2、查詢所有男性用戶的星座分布(為了保證性能,進行了limit 統計截斷)

g("user_relation_graph").V().hasLabel("user").indexQuery("{\"match\":{\"gender\":\"1\"},\"config\":{\"seek_count_limit_per_shard\":100000,\"search_count_limit_per_shard\":100000}}").groupCount().by("starsign")

查詢結果:

{
    "result": [
        {
            "data": [
                {
                    "\"Aquarius\"": 825,
                    "\"Aries\"": 640,
                    "\"Cancer\"": 923,
                    "\"Capricorn\"": 848,
                    "\"Gemini\"": 773,
                    "\"Leo\"": 821,
                    "\"Libra\"": 522,
                    "\"Pisces\"": 2397,
                    "\"Sagittarius\"": 491,
                    "\"Scorpio\"": 501,
                    "\"Taurus\"": 739,
                    "\"Virgo\"": 520
                }
            ],
            "error_info": [               
            ],
            "trace_info": {              
            }
        }
    ],
    "error_info": [        
    ]

3、查詢好友最多的100名白羊座男性用戶

g("user_relation_graph").V().hasLabel("user").indexQuery("{\"and\":[{\"match\":{\"gender\":\"1\"}\},\{\"match\":{\"starsign\":\"Aries\"}}],\"config\":{\"seek_count_limit_per_shard\":100000,\"search_count_limit_per_shard\":100000}}").limit(10000).outE().groupCount().by("from_id").unfold().order().by(select(Column.values),decr).limit(100)

查詢結果:

{
  "result": [
    {
      "data": [
        {
          "-7032647615083234229": "50"
        },
        {
          "-5722782251601168066": "50"
        },
        {
          "-5335242748220558153": "50"
        },
        {
          "-8676408452255309391": "50"
        },
        {
          "-6047928004364318541": "50"
        },
        {
          "-5344466669668822162": "50"
        },
        {
          "-6190401221243138849": "50"
        },
        {
          "-4827852736929428415": "50"
        },
        {
          "-5307302829373746633": "50"
        },
        {
          "-5475401520922089187": "50"
        },
        {
          "-8017336865667734219": "50"
        },
        {
          "-8152630370117271740": "50"
        },
        {
          "-7004109459328652310": "50"
        },
        {
          "-7817593255334792111": "50"
        },
        {
          "-5272574182922494022": "50"
        },
        {
          "-8523896507246731100": "50"
        },
        {
          "-5938745235467206212": "50"
        },
        {
          "-8438867826624678384": "50"
        },
        {
          "-4405449005585220943": "50"
        },
        {
          "-9126301390881979643": "50"
        },
        {
          "-5382489933968271711": "50"
        },
        {
          "-8841373379965641987": "50"
        },
        {
          "-5302202017699941647": "50"
        },
        {
          "-6248244606214120159": "50"
        },
        {
          "-6711633791333564554": "50"
        },
        {
          "-7315782827574470472": "50"
        },
        {
          "-9031277985752489187": "50"
        },
        {
          "-9022869359443119815": "50"
        },
        {
          "-8369470302541518920": "50"
        },
        {
          "-6142766699127849771": "50"
        },
        {
          "-8655738446138261193": "50"
        },
        {
          "-8646149194767113790": "50"
        },
        {
          "-9097183937680782346": "50"
        },
        {
          "-4641376756135904334": "50"
        },
        {
          "-9081172527938898024": "50"
        },
        {
          "-7137344541799001227": "50"
        },
        {
          "-8491934123275310192": "50"
        },
        {
          "-5656245743850590165": "50"
        },
        {
          "-8448876639884702547": "50"
        },
        {
          "-8921032424157220292": "50"
        },
        {
          "-8886790874757451152": "50"
        },
        {
          "-4170067740591839020": "50"
        },
        {
          "-8412401447690411889": "50"
        },
        {
          "-6935600597565680532": "50"
        },
        {
          "-6465292696804515998": "50"
        },
        {
          "-4580178566813967734": "50"
        },
        {
          "-8337980039891383510": "50"
        },
        {
          "-6750094915823112945": "50"
        },
        {
          "-8271130662107074869": "50"
        },
        {
          "-4313989045148439251": "50"
        },
        {
          "-7072971882028192758": "50"
        },
        {
          "-6081673847669716322": "50"
        },
        {
          "-8215720337033905961": "50"
        },
        {
          "-4511660190549716707": "50"
        },
        {
          "-6954636645089290492": "50"
        },
        {
          "-5470987491723790775": "50"
        },
        {
          "-8693909718856724970": "50"
        },
        {
          "-9172299426900892564": "50"
        },
        {
          "-6142070315717702174": "50"
        },
        {
          "-8683222889153361552": "50"
        },
        {
          "-6061245317590715601": "50"
        },
        {
          "-8680938277196498242": "50"
        },
        {
          "-6382251776295701372": "50"
        },
        {
          "-7953204420754362673": "50"
        },
        {
          "-5390210842719212579": "50"
        },
        {
          "-7836046658486786908": "50"
        },
        {
          "-7151222483126499509": "50"
        },
        {
          "-7824880497332818548": "50"
        },
        {
          "-5914268273571897378": "50"
        },
        {
          "-6703760236487855527": "50"
        },
        {
          "-6251439297928817838": "50"
        },
        {
          "-7764254764054046817": "50"
        },
        {
          "-4147078275545366756": "50"
        },
        {
          "-8961736465346823903": "50"
        },
        {
          "-6966728454894457236": "50"
        },
        {
          "-7670177853018881196": "50"
        },
        {
          "-5753132289681546447": "50"
        },
        {
          "-7607424647216651656": "50"
        },
        {
          "-6860348792160569972": "50"
        },
        {
          "-7081692058360204084": "50"
        },
        {
          "-4284841470230159060": "50"
        },
        {
          "-7050130964435971895": "50"
        },
        {
          "-5460635829467019773": "50"
        },
        {
          "-7486065564917180528": "50"
        },
        {
          "-4775647028251006118": "50"
        },
        {
          "-7438712711008287507": "50"
        },
        {
          "-6655259811991911369": "50"
        },
        {
          "-8414061350601269280": "50"
        },
        {
          "-4138667890938143127": "50"
        },
        {
          "-7428739044579099070": "50"
        },
        {
          "-5783820100141303990": "50"
        },
        {
          "-7104520570549970103": "50"
        },
        {
          "-5351128558805225544": "50"
        },
        {
          "-3919387380195528267": "50"
        },
        {
          "-3924714660733547258": "50"
        },
        {
          "-4056394674602078332": "50"
        },
        {
          "-4062831157333201368": "50"
        },
        {
          "-4812848481660416581": "50"
        },
        {
          "-6513421419955124633": "50"
        },
        {
          "-7028635231904837853": "50"
        }
      ],
      "error_info": [],
      "trace_info": {}
    }
  ],
  "error_info": []
}