当前位置: 首页 > news >正文

亚马逊云科技产品测评』活动征文|通过使用Amazon Neptune来预测电影类型初体验

文章目录

    • 福利来袭
    • Amazon Neptune
      • 什么是图数据库
      • 为什么要使用图数据库
      • 什么是Amazon Neptune
      • Neptune 的特点
    • 快速入门
      • 环境搭建
        • notebook
      • 图神经网络快速构建
        • 加载数据
        • 配置端点
        • Gremlin 查询
        • 清理
    • 删除环境
        • S3 存储桶删除

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

福利来袭

前几天有小伙伴在群里灵魂发问:双11到来之际,阿里云、华为云、腾讯云哪家云服务的价格优惠力度最大?看到这个问题,群友各抒己见,展开了激烈的讨论,最终得出结论:三家国内云服务厂商提供的产品差异不大,价格优惠也不相上下。

在这里插入图片描述

看到这里,我将目光默默的转向了国外的云服务厂商亚马逊云(AWS)。大家作为 IT 人应该都知道亚马逊云在全球云市场中的地位举足轻重。据2021年全球云计算IaaS市场报告显示,亚马逊云市场份额高达38.9%,而国内最牛的阿里云也仅占9.5%。

来到亚马逊云的官网,我发现亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。

在这里插入图片描述

至于 活动地址 嘛,双手奉上,赶快来白嫖呀!同时给大家奉上数据库免费试用链接及上手教程

在AWS帐号注册过程中值得注意的一点:填写信用卡或者借记卡卡号时,虽然网址中标记的是VISA或者mastercard,其实普通的信用卡也是可以的。

当然除了价格优势之外,亚马逊云科技的优势还体现在以下方面:

  • 亚马逊云科技负责云自身的安全合规,不仅保证底层云基础设施和云服务的安全和合规;还提供了超过280多项安全、合规和治理方面的服务与工具。
  • 亚马逊云科技有着覆盖全球的基础设施。
  • 亚马逊云科技拥有超过200大类的云服务,从广度和深度上都能满足数字化出海和出海数字化的技术需求。
  • 亚马逊云科技与全球超过10万家合作伙伴一起为出海企业提供从咨询、迁移到解决方案构建、到云上交付和运维的完整服务。
  • 在全球,亚马逊是多个领域的引领者,包括亚马逊电商、智能物流、智能语音助手、智慧零售以及设备等多个领域。

Amazon Neptune

在了解Amazon Neptune之前,我们先来了解一下“图数据库”的概念。

什么是图数据库

在这里插入图片描述

如上图所示,将结点的人物和箭头表示的关系构成的图进行存储和查询的数据库就被称为图数据库。图数据库强调数据之间的关联关系,它将数据间的联系视为和数据本身同等重要。

为什么要使用图数据库

在互联网飞速发展的今天,传统的关系型数据库在处理关系操作方面表现出疲软的态势,而图数据库通过存储数据与关系,能将访问数据结点和关系的操作提升至线性时间复杂度,甚至能在一秒内遍历百万级的关系边,性能显著。

我们可以利用图数据库以多种方式表示现实世界实体之间的相互关系,包括行为、所有权、亲属关系、购买选择、个人联系、家庭关系等。以下是截止2021年8月,DB-ENGINES中图数据库前二十位的排行榜名单,我们可以看到Amazon的Neptune排在第八位。接下来就让我们来了解下Amazon Neptune。

在这里插入图片描述

什么是Amazon Neptune

Amazon Neptune是一项快速、可靠且完全托管式的图数据库服务,可用来帮助我们轻松构建和运行适用于高度互连数据集的应用程序。Neptune的核心是一个专门打造的高性能图形数据库引擎,此引擎经过优化,可存储数十亿条关系并以数毫秒级延迟查询图形。

Neptune 的特点

  • Neptune 支持流行的图表查询语言 Apache TinkerPop W3C SPARQL GrimlinNeo4JOpenPher,可让我们构建查询,高效地浏览高度互连数据集。
  • Neptune具有高度可用性,带有只读副本, point-in-time Amazon S3 的持续备份以及跨可用区的复制。
  • Neptune 提供了数据安全功能,并支持加密静态数据和传输中的数据。
  • Neptune 是完全托管的,因此再也无需担心数据库管理任务,例如硬件预配置、软件修补、设置、配置或备份。

光说不练假把式,接下来就让我们操练起来吧!

快速入门

环境搭建

首先我们需要登录到AWS的控制台

在这里插入图片描述

在控制台顶上搜索cloudshell

在这里插入图片描述

打开cloudshell之后如果出现如下页面,需要切换一下节点,如图所示

在这里插入图片描述

然后我们就可以创建 S3 存储桶了

在这里插入图片描述

其中cheetah-qing为自己的桶名,需要自定义。

我发现该桶名不支持下划线“_”。

接着我们需要通过命令来创建“堆栈“,命令如下:

aws cloudformation create-stack --stack-name get-started-neptune-ml --template-url https://s3.amazonaws.com/ee-assets-prod-us-east-1/modules/4f0f18a83e6148e895b10d87d4d89068/v1/gcr-buildon-selfpace/gcr-buildon-neptune-ml-nested-stack.json --capabilities CAPABILITY_IAM --region us-east-1 --disable-rollback

在这里插入图片描述

执行完命令后,大约需要等待30分钟:此时后台会启动一系列的服务

我们可以通过在控制台顶上搜索cloudformation来查看堆栈是否创建完成,如果get-started-neptune-ml显示 CREATE_COMPLETE表示服务创建完成。

notebook

在搜索栏输入neptune,点击进入,导航栏选择“笔记本”,点击右侧的“查看笔记本文档”。

在这里插入图片描述

倘若没有 notebook,需确定地区是否选择正确,默认为美国东部,其次确认后台服务是否都启动完成。

图神经网络快速构建

我们可以根据上方打开的“ Amazon Neptune ML ”笔记来进行操作。在控制台输入命令来检查集群是否已正确配置可以运行 Neptune ML

在这里插入图片描述

开始试验之前先来张步骤图感受下

在这里插入图片描述

加载数据

我们使用 Bulk Loader来加载数据,其流程与将数据摄入Amazon Neptune完全相同。通过编写脚本可以实现自动执行从MovieLens网站下载数据,调整数据格式,并将数据载入Neptune的全过程。脚本如下:

s3_bucket_uri="s3://cheetah-qing"
# remove trailing slashes
s3_bucket_uri = s3_bucket_uri[:-1] if s3_bucket_uri.endswith('/') else s3_bucket_uri

cheetah-qing为我们刚才创建的桶名称

执行response = neptune_ml.prepare_movielens_data(s3_bucket_uri)命令即可下载 MovieLens 数据,并将其调整为可被 NeptuneBulk Loader 兼容的格式。

执行结果为

Completed Processing, data is ready for loading using the s3 url below:
s3://cheetah-qing/neptune-formatted/movielens-100k

操作完成后,执行%load -s {response} -f csv -p OVERSUBSCRIBE --run加载数据。

在这里插入图片描述

配置端点

执行命令来创建端点,并获取到推理端点的端点名称。

setup_node_classification=True
setup_node_regression=True
setup_link_prediction=True
setup_edge_classification=True
setup_edge_regression=Trueendpoints=neptune_ml.setup_pretrained_endpoints(s3_bucket_uri, setup_node_classification, setup_node_regression, setup_link_prediction, setup_edge_classification, setup_edge_regression)node_classification_endpoint=endpoints['node_classification_endpoint_name']['EndpointName']
node_regression_endpoint=endpoints['node_regression_endpoint_name']['EndpointName']
link_prediction_endpoint=endpoints['prediction_endpoint_name']['EndpointName']
edge_classification_endpoint=endpoints['edge_classification_endpoint_name']['EndpointName']
edge_regression_endpoint=endpoints['edge_regression_endpoint_name']['EndpointName']
Gremlin 查询

现在终于到了我们的电影类型预测环节了,我们一起来看看如何使用这些端点借助 Gremlin 查询进行推断。

在预测电影类型前,我们先执行

在这里插入图片描述

来验证图谱中,Forrest Gump 这个 moviegenre不包含任何 genre 值。

接下来我们修改这个查询,来预测 Apollo 13 的类型,开始之前先来设置一下:

  • 指定要在 Gremlin 查询中使用的推理端点:g.with("Neptune#ml.endpoint","<INSERT ENDPOINT NAME>")
  • 指定我们想要获取该属性的预测值:with("Neptune#ml.classification")

将这些内容结合在一起就可以得到下方的查询,该查询可通过我们的产品知识图谱预测电影 Forrest Gumpgenre。执行命令:

%%gremlin
g.with("Neptune#ml.endpoint","${node_classification_endpoint}").V().has('title', 'Forrest Gump (1994)').properties("genre").with("Neptune#ml.classification").value()

在这里插入图片描述

查看结果可知,预测结果似乎是正确的,Forrest 似乎被正确预测为 Drama 类型。

很多情况下,我们可能需要预测一个节点的多个类别。例如在我们的产品知识图谱中,一部电影很可能被归类为多个类型,我们可能需要预测所有这些类型。默认情况下,Neptune ML 会返回排名第一的结果,但我们可以使用 .with("Neptune#ml.limit",3) 配置选项指定希望返回的结果数量。一起看看针对Forrest Gump 返回的,排名前三的结果吧。

在这里插入图片描述

Neptune ML 返回的每个值都有一个与之关联的置信度分数,而无论预测结果的置信度如何,上述查询都会返回排名前三的结果。虽然该分数在查询时不可用,但它可用于筛选掉置信度较低的预测。

假设我们想要返回Forrest Gump预测的排名前三的类型,但前提是这些结果必须满足特定的置信度要求。为此,可以使用.with("Neptune#ml.threshold",0.2D)选项为查询添加筛选器,如下所示。

在这里插入图片描述

如上所示,目前我们只得到了 Drama 这个预测类型,因为这是唯一高于阈值的预测结果。

清理

我们已经使用Amazon Neptune来完成了预测电影类型的初体验,我们之前创建的 SageMaker 端点依然在运行并会按照标准费率产生费用。如果已完成 Neptune ML 的试用工作,希望避免产生这种重复性的成本,那么可以运行neptune_ml.delete_pretrained_endpoints(endpoints)来删除所创建的推断端点。

除了推断端点的成本外,我们之前使用的CloudFormation脚本也创建了多个额外资源。如果我们的全部操作均已完成,那么我们得删除 CloudFormation 栈,以避免产生重复的费用。

删除环境

为了防止之后的额外扣费,必须进行下面的删除环境操作,

在这里插入图片描述

S3 存储桶删除

选择 cloudshell,执行aws s3 rb s3://cheetah-qing --force删除 S3 存储桶

在这里插入图片描述

至此,我们的使用Amazon Neptune来完成预测电影类型的初体验就已经完成了,现在我们来总结一下它的优势:

  • Amazon Neptune 支持 Gremlin 和 SPARQL 的开放图谱 API,并为这些图形模型及其查询语言提供高性能。
  • Neptune 可在三个可用区内支持最多 15 个低延迟读取副本,从而扩展读取容量并每秒执行超过 10 万个图形查询。
  • Neptune 旨在提供超过 99.99% 的可用性。其存储系统具有容错能力并能自我修复,专为云而构建,可以跨三个可用区复制六个数据副本。
  • Amazon Neptune 为您的数据库提供多级安全保护,包括使用 Amazon VPC 进行网络隔离、支持终端节点访问的 IAM 身份验证、HTTPS 加密的客户端连接、使用您通过 AWS Key Management Service (KMS) 创建和控制的密钥对静态数据进行加密。
  • Neptune 会自动持续地监控您的数据库并将其备份到 Amazon S3.因此可实现精细的时间点恢复。

如果有问题或者有更好的体验方式,欢迎留言或私信阿Q呦,我们一起进步!

相关文章:

亚马逊云科技产品测评』活动征文|通过使用Amazon Neptune来预测电影类型初体验

文章目录 福利来袭Amazon Neptune什么是图数据库为什么要使用图数据库什么是Amazon NeptuneNeptune 的特点 快速入门环境搭建notebook 图神经网络快速构建加载数据配置端点Gremlin 查询清理 删除环境S3 存储桶删除 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转…...

【获奖论文】2023年数学建模国赛优秀获奖论文

论文篇幅过长&#xff0c;本文仅展示少部分&#xff1b;共计14篇完整PDF获奖论文。 关注在微信公众号&#xff1a;数学建模BOOM&#xff0c;回复“2023国赛”获取。 注意&#xff01;是在公众号回复&#xff0c;不是在b站。 优秀论文部分内容展示&#xff1a; 更多A~E题的完…...

美团三年,总结的10条血泪教训

在美团的三年多时光&#xff0c;如同一部悠长的交响曲&#xff0c;高高低低&#xff0c;而今离开已有一段时间。闲暇之余&#xff0c;梳理了三年多的收获与感慨&#xff0c;总结成10条&#xff0c;既是对过去一段时光的的一个深情回眸&#xff0c;也是对未来之路的一份期许。 …...

【CSP认证考试】202309-1:坐标变换(其一)100分解题思路+代码

解题思路 暴力解决&#xff0c;不考虑时空开销就一直用for循环也可以做出来。按照题目意思输入两个数组&#xff0c;然后将第一个输入的数组的x部分累加起来记作x&#xff0c;再将y部分累加起来记作y。再将第二个数组的x部分都加上x&#xff0c;y部分加上y。最后输出第二个数组…...

剩余参数和展开运算符的区别

一、剩余参数 剩余参数语法允许在函数定义时&#xff0c;将多个参数表示为一个参数数组。 使用剩余参数&#xff0c;可以将不定数量的参数作为一个数组接收&#xff0c;并在函数内部对其进行操作。剩余参数使用三个点 (…) 加上一个参数名来表示&#xff0c;通常用于函数的最后…...

ES6的基础用法

本文会着重讲解es6&#xff0c;帮助大家熟悉es6和掌握es6的写法 1&#xff0c;let 没有变量提升&#xff0c;使用变量在变量定义之前&#xff0c;这点和var有很大区别 不允许重复声明 只在块级作用域里有效 暂时性死区 console.log(a) //报错&#xff0c;因为在未定义前调用l…...

standard_init_linux.go:211: exec user process caused “exec format error“

在使用docker搭建hue的过程中出现了如下错误: standard_init_linux.go:211: exec user process caused "exec format error"docker日志 [roots14 bin]# docker logs fa5b1c4e0614 standard_init_linux.go:211: exec user process caused "exec format error&q…...

python的format函数的用法及实例

目录 1.format函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;{}.format() &#xff08;2&#xff09;用法&#xff1a;用于格式化字符串。可以接受无限个参数&#xff0c;可以指定顺序。返回结果为字符串。 2.实例 &#xff08;1&#xff09;不设置位置&…...

BigDecimal 类型的累加操作

BigDecimal 累加操作 .add操作...

基于单片机的土壤温湿度控制系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、温湿度控制系统的整体规划2.3系统的总体构架 二、温度湿度控制系统硬件设计3.1系统硬件概述 三、 温湿度系统软件…...

服务器数据库中了elbie勒索病毒怎么办,elbie勒索病毒解密,数据恢复

网络技术的不断成熟&#xff0c;为企业的生产运营提供了强有力的支撑&#xff0c;但是&#xff0c;随之而来的网络安全威胁也不断增加。云天数据恢复中心陆陆续续接到很多企业的求助&#xff0c;企业的服务器数据库e遭到了elbie勒索病毒攻击&#xff0c;导致企业计算机系统瘫痪…...

接口测试及接口测试工具

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给你…...

JUC包工具类介绍二

JUC包工具类介绍二 异步任务 Callable Callable接口定义一个异步任务&#xff0c;当Callable接口提交到ExecutorService进行异步执行时&#xff0c;返回结果通过Java Future获取。Callable接口同样可以获取任务执行时的异常。 public class MyCallable implements Callable&…...

第8章_聚合函数

文章目录 1 聚合函数介绍1.1 AVG和SUM函数1.2 MIN和Max函数1.3 COUNT函数演示代码 2 GROUP BY2.1 基本使用2.2 使用多个列分组2.3 演示代码 3 HAVING3.1 基本使用3.2 WHERE和HAVING的对比3.3 演示代码 4 SELECT的执行过程4.1 查询的结构4.2 SELECT执行顺序4.3 SQL的执行原理演示…...

Mysql8与mariadb的安装与常用设置

一、v10服务器mariadb的安装与常用设置 V10服务器默认安装了mariadb数据库。也可使用命令sudo yum install mariadb手动安装或升级默认安装的版本。 1.1 修改数据库密码 systemctl restart mariadb,重启mariadb服务&#xff1b;mysql -u root -p,要求输入密码直接回车&#…...

深入剖析Golang中单例模式

前言 虽说Golang并不是C、Java这种传统的面向对象语言&#xff0c;而是偏向于面向接口编程的语言。但是Golang依旧有接口、结构体、组合等概念去模拟所谓面向对象中非常重要的设计模式。基于面向对象的模型去编写代码往往能编写成高内聚、低耦合、扩展性极强、难出bug的高质量…...

Java之SpringCloud Alibaba【八】【Spring Cloud微服务Gateway整合sentinel限流】

一、Gateway整合sentinel限流 网关作为内部系统外的一层屏障,对内起到-定的保护作用&#xff0c;限流便是其中之- - .网关层的限流可以简单地针对不同路由进行限流,也可针对业务的接口进行限流,或者根据接口的特征分组限流。 1、添加依赖 <dependency><groupId>c…...

深入解析 Redis 分布式锁原理

一、实现原理 1.1 基本原理 JDK 原生的锁可以让不同线程之间以互斥的方式来访问共享资源&#xff0c;但如果想要在不同进程之间以互斥的方式来访问共享资源&#xff0c;JDK 原生的锁就无能为力了。此时可以使用 Redis 来实现分布式锁。 Redis 实现分布式锁的核心命令如下&am…...

[unity]多脚本情况下update函数的执行顺序

序 有的时候&#xff0c;执行某些脚本时会有先后顺序的要求。unity是按什么顺序来执行脚本的&#xff1f;如何设置&#xff1f; 默认的执行顺序 官方文档里面有个很长的图&#xff1a; Unity - Manual: Order of execution for event functions (unity3d.com) 根据文档&…...

Maven中<scope>中等级的区别

标签指定了依赖项的级别吗&#xff0c;默认是compile &#xff08;编译&#xff09;。意味着依赖项将会在编译时和运行时都被包含在项目中 <scope> 标签指定了依赖项的级别为 import 。除了 import 级别&#xff0c;Maven还支持以下几种级别&#xff1a; compile &#x…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...