如何使用GraphDB做商品实时推荐

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Tair(兼容Redis),内存型 2GB
简介:

几乎所有的企业都需要了解如何快速并且高效地影响客户来购买他们的产品并且推荐其他相关商品给他们。这可能需要用到云服务的推荐,个性化,网络分析工具。图非常适合这些类似的分析用例,如推荐产品,或基于用户数据,过去行为,推荐个性化广告。下面我们来看看怎么使用图做个性化推荐

购买graphdb服务

  • 登录www.aliyun.com 后进入hbase产品控制台,选择创建hbase集群
    buy-guide-1
  • 选择Graphdb(图)子产品,之后分别勾选付费方式,地域,可用区,网络类型,vpc。跟选购其他产品一致
    g2
  • 接来下选择master及core的规则,购买core个数及磁盘容量,参考自身实际需求,这里笔者这里选择4核8G,之后选择立即购买
    g3
  • 之后同意协议完成支付,回到hbase控制台,当前状态初始化,等待集群创建完毕
    g4
  • 集群创建完毕后,可以拿到如下图库地址,记住这个地址,替换下面命令行中的$host变量
    g5

如果需要使用graph-loader工具批量导入数据,请联系钉钉 云hbase答疑 我们帮您开通hbase服务端口

  • 修改访问控制,把客户端ecs加入访问白名单
    g6

g7

  • 在客户端ecs执行如下命令,有消息体返回,说明客户端可以正常访问graphdb了。
    如果出现异常先尝试telnet $host 8180,如果不通则说明需要添加这台ECS IP至访问白名单
curl -XPOST -d '{"gremlin": "1+1" }'  http://$host:8180
{"requestId":"9db39735-9b69-4425-b58c-2b8c230d2fb9","status":{"message":"","code":200,"attributes":{}},"result":{"data":[2],"meta":{}}}

接下来您可以使用练习下graphdb快速入门

构造图示数据模型

用户在电商网站会产生订单历史记录,订单会包含一堆商品,让我们构造一个如下图数据模型

undefined

数据建模

我们重点考虑下面三类顶点,顾客customer, 订单order, 产品product

  • 顾客下订单行为用 ordered边分别关联customer,order顶点
  • 订单会包含多个商品,定义contains边,分别连接order顶点及product顶点。
    表示一个订单会包含多个商品。

丰富顶点及边的属性
作为示例,我们假定

  • 顾客只有customerid, name
  • order顶点只要orderid, ordertime
  • product顶点只有productid, name。
  • ordered/contains边暂时不需要额外属性字段,

创建schema

我们使用hgraphdb-loader导入图schema及数据,hgraphdb-loader下载地址: http://public-hbase.oss-cn-hangzhou.aliyuncs.com/installpackage/hgraphdb-loader.tar.gz
创建schema.json文件,编写如下schema

{
  "vertexLabels" : [ {
    "name" : "customer",
    "properties" : [ {
      "name" : "id",
      "type" : "String"
    }, {
      "name" : "name",
      "type" : "String"
    } ],
    "indexes" : [ {
      "propertykey" : "name",
      "unique" : false
    } ]
  }, {
    "name" : "order",
    "properties" : [ {
      "name" : "id",
      "type" : "String"
    }, {
      "name" : "ordertime",
      "type" : "Date"
    } ],
    "indexes" : [ ]
  }, {
    "name" : "product",
    "properties" : [ {
      "name" : "id",
      "type" : "String"
    }, {
      "name" : "name",
      "type" : "String"
    } ],
    "indexes" : [ ]
  } ],
  "edgeLabels" : [ {
    "name" : "ordered",
    "properties" : [ ],
    "indexes" : [ ],
    "connections" : [ {
      "outV" : "customer",
      "inV" : "order"
    } ]
  }, {
    "name" : "contains",
    "properties" : [ ],
    "indexes" : [ ],
    "connections" : [ {
      "outV" : "order",
      "inV" : "product"
    } ]
  } ]
}

准备顶点&边数据集,csv格式

所有的顶点都放到一个vertex.csv文件中

1,customer,oAECseuFIx
2,customer,UpOqBuMQSG
3,customer,WTlnfKULti
10001,order,2015-09-06
10002,order,1998-06-08
110001,product,ZDoVtEBlDq
110002,product,GXsssxOJSq

...

所有的边都放到一个edge.csv文件中

9610,58824,ordered
2069,12200,ordered
85589,113864,contains
50591,110945,contains

我们直接准备了一些测试数据, 点击此处下载

hgraph-loader执行导入

点击下载工具
执行解压,进入目录,执行如下导入命令。

sh run.sh import emr-header-1,emr-header-2,emr-header-3 demo/schema.json demo/vertex.csv demo/edge.csv

使用gremlin-console做图遍历

下载gremlin-console客户端,解压,

remote.yaml 配置remote server地址, 购买graphdb后控制台可以看到这个地址。

hosts: [$host]
port: 8180

打开gremlin-console

bin/gremlin.sh

连接gremlin-server,并设置脚本自动提交至server

gremlin> :remote connect tinkerpop.server conf/remote.yaml session
==>Configured localhost/127.0.0.1:8180-[b1725987-7f5a-4a61-914a-d0ab39473105]
gremlin> :remote console
==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:8180]-[b1725987-7f5a-4a61-914a-d0ab39473105] - type ':remote console' to return to local mode

执行

使用如下germlin语句做实时推荐,为id=2的顾客做商品推荐
注:无超级顶点的小图场景可以这样查询,生产环境配合使用dedup()操作

gremlin> g.V("2").as("customer").out("ordered").out("contains").aggregate("products").in("contains").in("ordered").where(neq("customer")).out("ordered").out("contains").where(not(within("products"))).groupCount().by("name").order(local).by(values,decr).limit(local,5)
==>[SUKjnHCshw:13,pqiGHapYGW:12,ktkZSKsEdK:11,twLtDaYJmo:11,JAbhZdfhkO:10]

如果使用关系型数据库,sql如下:

select top (5) [t14].[productname]
    from (select count(*) as [value], [t13].[productname]
            from [customers] as [t0]
    cross apply (select [t9].[productname]
                    from [orders] as [t1]
                cross join [order details] as [t2]
                inner join [products] as [t3]
                        on [t3].[productid] = [t2].[productid]
                cross join [order details] as [t4]
                inner join [orders] as [t5]
                        on [t6].[customerid] = [t5].[customerid]
                cross join ([orders] as [t7]
                            cross join [order details] as [t8]
                            inner join [products] as [t9]
                                    on [t9].[productid] = [t8].[productid])
                    where not exists(select NULL as [empty]
                                        from [orders] as [t10]
                                cross join [order details] as [t11]
                                inner join [products] as [t12]
                                        on [t12].[productid] = [t11].[productid]
                                      where [t9].[productid] = [t12].[productid]
                                      and [t10].[customerid] = [t0].[customerid]
                                      and [t11].[orderid] = [t10].[orderid])
                    and [t6].[customerid] <> [t0].[customerid]
                    and [t1].[customerid] = [t0].[customerid]
                    and [t2].[orderid] = [t1].[orderid]
                    and [t4].[productid] = [t3].[productid]
                    and [t7].[customerid] = [t6].[customerid]
                    and [t8].[orderid] = [t7].[orderid]) as [t13]
                where [t0].[customerid] = N'1' //customerId
            group by [t13].[productname]) as [t14]
order by [t14].[value] desc        

可见非常繁琐,效率低下

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
安全 数据挖掘 API
【实时数据】商品详情API接口系列开发
商品详情API接口系列对于电商平台至关重要,它们为开发者提供了实时、准确的商品信息,使得在线销售和展示商品变得更加高效和精准。以下是几个主要的电商平台及其商品详情API接口的介绍:
|
6月前
|
数据采集 存储 监控
淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get
淘宝详情数据采集涉及多个环节,包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时,尤其是面对海量数据时,需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议:
|
6月前
|
机器学习/深度学习 JSON 监控
智能定价模型:借助API实时更新商品价格信息
在电子商务的迅猛发展中,价格战成为商家间常见的竞争方式。然而,一成不变的价格策略无法满足市场的即时需求和消费者的多变偏好。因此,智能定价(也称为动态定价)成为了电商平台提升市场竞争力的关键工具。智能定价模型通过实时监控市场数据和消费者行为,自动调整商品价格以最大化收益或实现其他商业目标。本文将深入探讨如何利用API技术实现智能定价,并提供一个Python代码示例来指导读者进行实时价格更新。
|
28天前
|
安全 API 数据安全/隐私保护
商品详情API接口的优势分析与应用价值
在数字化时代,商品详情API接口为商家和开发者提供了实时更新、高效集成、丰富功能、安全稳定、易于扩展及提升用户体验的解决方案,助力提高运营效率、降低成本并增强市场竞争力。
|
6月前
|
存储 数据可视化 API
1688商品详情数据接口:如何通过1688 API实现批量商品数据抓取和分析
使用1688 API进行批量商品数据抓取和分析,首先需注册账号创建应用获取App Key和Secret Key。研究API文档,构建请求URL,如商品详情、搜索、销售量等接口。利用编程语言发送HTTP请求,实时抓取并处理数据,存储到数据库。实施优化策略,处理错误,记录日志。数据可视化展示并确保API安全性。编写文档并持续更新以适应API变化。参考[c0b.cc/R4rbK2]获取API测试和SDK。
|
4月前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之如何实现根据商品维度统计每件商品的断货时长的功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
XML 监控 API
淘宝商品详情数据接口全攻略:如何高效获取与分析商品信息
【淘宝商品详情数据接口全攻略】:注册开发者账号,申请API权限,构建HTTP请求获取商品信息,包括基础属性、价格等。遵循规则,处理并分析数据,用于竞品分析、价格监控和用户行为洞察。利用接口高效获取数据,助力电商决策。#淘宝API #数据分析
|
5月前
|
存储 JSON API
批量采集抖音商品详情数据:推荐你使用API(通过商品id取商品详情商品主图sku属性)
批量采集抖音商品详情,建议使用API接口。步骤包括:注册抖音开放平台获取App Key和Secret,调用商品详情API接口传入商品ID及相关参数,解析返回的JSON获取商品信息(如名称、价格、主图和SKU)。此外,接口列表提供商品搜索、销售量查询、历史价格、订单管理等多种功能。已封装的API接口地址:c0b.cc/R4rbK2,可测试并联系获取SDK文件。
|
6月前
|
数据挖掘 API
京东商品详情API:数据分析和挖掘以优化销售策略
商品关联分析:通过分析商品之间的关联规则,商家可以发现哪些商品经常一起被购买,从而制定捆绑销售或搭配销售策略,提高客单价和用户满意度。
|
6月前
|
存储 数据采集 JSON
电商API分享:如何批量获取商品详情页数据(属性图价格sku视频评论)
电商API(应用程序接口)通常提供了丰富的数据获取功能,使开发者能够方便地获取商品详情页的各种数据,包括商品属性、图片、价格、SKU(库存量单位)、视频以及评论等。以下是一个基本的步骤指南,用于通过电商API批量获取商品详情页数据: